项目中的换肤工具需要生成纯资源的APK包,给动态换肤用。
之前是先用AAPT生成R.java, 再生成R.class, 再生成dex,再生成apk。很复杂,还依赖JRE。大概长这样:
1 2 3 4 5 6
| $ aapt package -f -m -S res\ -I android.jar -M AndroidManifest.xml -F temp\bin\xxx.zip $ aapt package -f -m -S res\ -I android.jar -M AndroidManifest.xml -J temp\gen\xxx $ dir /s /b temp\gen\xxx\*.java > temp\src\xxx\sources.txt $ javac -target 1.8 -bootclasspath android.jar -d temp\gen\xxx @temp\src\xxx\sources.txt $ dx --dex --output temp\bin\xxx\classes.dex temp\gen\xxx $ java -cp sdklib.jar com.android.sdklib.build.ApkBuilderMain temp\zip\xxx.apk -v -u -z temp\bin\xxx.zip -f temp\bin\xxx\classes.dex
|
AAPT2
AAPT2(Android 资源打包工具)是一种构建工具,Android Studio 和 Android Gradle 插件使用它来编译和打包应用的资源。AAPT2 会解析资源、为资源编制索引,并将资源编译为针对 Android 平台进行过优化的二进制格式。
使用AAPT2则简单很多,且不依赖JRE。大概长这样:
1 2
| $ aapt2 compile --dir res\ -o build\res.zip $ aapt2 link -I android.jar build\res.zip --manifest AndroidManifest.xml -o build\xxx.apk
|
Reference