Fixing APK Compile Error



I have been trying to change, decompile, and recompile Trebuchet to change the items on the dock and home screen.  I keep getting errors, and I think I have finally found the solution.

The output of the command is quite long, so let me post the beginning:

skp@chestnut:~/app/hd2/dev/work$ apktool b Trebuchet-orig Trebuchet.apk

I: Copying classes.dex file...

I: Checking whether resources has changed...

I: Building resources...

invalid resource directory name: /home/skp/app/hd2/dev/work/Trebuchet-orig/res/values-sw720dp-land

invalid resource directory name: /home/skp/app/hd2/dev/work/Trebuchet-orig/res/drawable-sw600dp-nodpi

invalid resource directory name: /home/skp/app/hd2/dev/work/Trebuchet-orig/res/drawable-sw600dp-land-hdpi

And, here’s the end of the output:

invalid resource directory name: /home/skp/app/hd2/dev/work/Trebuchet-orig/res/layout-sw720dp

Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL1399953021396634018.tmp, -I, /home/skp/apktool/framework/1.apk, -S, /home/skp/app/hd2/dev/work/Trebuchet-orig/res, -M, /home/skp/app/hd2/dev/work/Trebuchet-orig/AndroidManifest.xml]

at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:193)

at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)

at brut.androlib.Androlib.buildResources(Androlib.java:248)

at brut.androlib.Androlib.build(Androlib.java:171)

at brut.androlib.Androlib.build(Androlib.java:154)

at brut.apktool.Main.cmdBuild(Main.java:182)

at brut.apktool.Main.main(Main.java:67)

Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL1399953021396634018.tmp, -I, /home/skp/apktool/framework/1.apk, -S, /home/skp/app/hd2/dev/work/Trebuchet-orig/res, -M, /home/skp/app/hd2/dev/work/Trebuchet-orig/AndroidManifest.xml]

at brut.util.OS.exec(OS.java:83)

at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:191)

... 6 more

What I finally found, was that I installed an old or invalid version of aapt with apktool.  It was installed into /usr/local/bin…

skp@chestnut:~/app/hd2/dev/work$ which aapt

/usr/local/bin/aapt

skp@chestnut:~/app/hd2/dev/work$ ll `which aapt`

-rwxr-x--- 1 skp skp 3747857 May 15 2011 /usr/local/bin/aapt*

The easy fix was to just rename this one installed with apktool.  Then, it pulled the one from my Android SDK intallation. (I already had the platform-tools directory in the path.)

skp@chestnut:~/app/hd2/dev/work$ cd /usr/local/bin/

skp@chestnut:/usr/local/bin$ sudo mv aapt aapt-broken

[sudo] password for skp:

skp@chestnut:/usr/local/bin$ which aapt

/home/skp/app/android-sdk-linux/platform-tools/aapt

After that, it compiled fine!

skp@chestnut:~/app/hd2/dev/work$ apktool b Trebuchet-orig Trebuchet.apk

I: Checking whether resources has changed...

I: Building resources...

I: Building apk file...

Leave a comment






6 × = thirty