Search code examples
androidlinuxantmupdf

How to build MuPDF for Android on Linux


I am having difficulty building MuPDF for Android on Linux. I have followed exactly the directions at How to build MuPDF for Android

The build fails when running the command 'ant debug' with the following error-

/home/georgew/AndroidSDK/android-sdk-linux/tools/ant/build.xml:653: The following error occurred while executing this line:

/home/georgew/AndroidSDK/android-sdk-linux/tools/ant/build.xml:698: null returned: 132

I have spent the day trying every suggested solution that Google could find. They all fail with this error, except that the value of the null returned can vary.

The build system is a Pentium4 running Scientific Linux 6.3. Ant was compiled from source because a newer version than supplied by SL6 was required.

Below are the last lines of output from running 'ant -d debug'

    Class com.android.ant.RenderScriptTask$1 loaded from ant loader (parentFirst)
     [echo] ----------
     [echo] Handling Resources...
Property "android.library" has not been set
     [aapt] Generating resource IDs...
Class org.apache.tools.ant.types.Commandline$Argument loaded from parent loader (parentFirst)
     [aapt] Current OS is Linux
     [aapt] Executing '/home/georgew/AndroidSDK/android-sdk-linux/build-tools/21.0.2/aapt' with arguments:
     [aapt] 'package'
     [aapt] '-f'
     [aapt] '-m'
     [aapt] '-0'
     [aapt] 'apk'
     [aapt] '-M'
     [aapt] '/home/georgew/AndroidSDK/src/mupdf/platform/android/bin/AndroidManifest.xml'
     [aapt] '-S'
     [aapt] '/home/georgew/AndroidSDK/src/mupdf/platform/android/bin/res'
     [aapt] '-S'
     [aapt] '/home/georgew/AndroidSDK/src/mupdf/platform/android/res'
     [aapt] '-I'
     [aapt] '/home/georgew/AndroidSDK/android-sdk-linux/platforms/android-16/android.jar'
     [aapt] '-J'
     [aapt] '/home/georgew/AndroidSDK/src/mupdf/platform/android/gen'
     [aapt] '--generate-dependencies'
     [aapt] '-G'
     [aapt] '/home/georgew/AndroidSDK/src/mupdf/platform/android/bin/proguard.txt'
     [aapt]
     [aapt] The ' characters around the executable and arguments are
     [aapt] not part of the command.
Execute:Java13CommandLauncher: Executing '/home/georgew/AndroidSDK/android-sdk-linux/build-tools/21.0.2/aapt' with arguments:
'package'
'-f'
'-m'
'-0'
'apk'
'-M'
'/home/georgew/AndroidSDK/src/mupdf/platform/android/bin/AndroidManifest.xml'
'-S'
'/home/georgew/AndroidSDK/src/mupdf/platform/android/bin/res'
'-S'
'/home/georgew/AndroidSDK/src/mupdf/platform/android/res'
'-I'
'/home/georgew/AndroidSDK/android-sdk-linux/platforms/android-16/android.jar'
'-J'
'/home/georgew/AndroidSDK/src/mupdf/platform/android/gen'
'--generate-dependencies'
'-G'
'/home/georgew/AndroidSDK/src/mupdf/platform/android/bin/proguard.txt'

The ' characters around the executable and arguments are
not part of the command.

BUILD FAILED
/home/georgew/AndroidSDK/android-sdk-linux/tools/ant/build.xml:653: The following error occurred while executing this line:
/home/georgew/AndroidSDK/android-sdk-linux/tools/ant/build.xml:698: null returned: 132
        at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:650)
        at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:676)
        at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:502)
        at com.android.ant.AaptExecTask.execute(AaptExecTask.java:703)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        at com.android.ant.IfElseTask.execute(IfElseTask.java:120)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:390)
        at org.apache.tools.ant.Target.performTasks(Target.java:411)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1366)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1249)
        at org.apache.tools.ant.Main.runBuild(Main.java:801)
        at org.apache.tools.ant.Main.startAnt(Main.java:218)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Solution

  • After much further research- the problem is not with building MuPDF. The problem is that aapt in the newer versions of the SDK is compiled with SSE2 support and is broken in older machines.

    The available solutions are to download and compile the SDK on the machine being used for the build, install the SDK and build the project on a more modern machine, or find a copy of a recent version of aapt that was compiled without SSE2 support.

    I searched and found a jar file, apktool-2.0.jar, that I extracted aapt from and the build completes successfully.