手动构建apk

  • aapt 编译R文件
/Users/leo/Library/Android/sdk/build-tools/26.0.2/aapt package -f -M ./AndroidManifest.xml -I "/Users/leo/Library/Android/sdk/platforms/android-26/android.jar" -S ./res/ -J out/ -m
  • javac 将java文件生成.class文件
javac  -bootclasspath "/Users/leo/Library/Android/sdk/platforms/android-26/android.jar" -d ./build/ ./java/tech/saymagic/fairproject/*.java ./out/tech/saymagic/fairproject/*.java
  • dex
/Users/leo/Library/Android/sdk/build-tools/26.0.2/dx --dex --output=./build/classes.dex ./build   
  • 编译资源,将 res下面的资源打包成二进制文件
/Users/leo/Library/Android/sdk/build-tools/26.0.2/aapt package -f -M ./AndroidManifest.xml -I "/Users/leo/Library/Android/sdk/platforms/android-26/android.jar" -S ./res/ -F ./build/resources.ap_
  • 组装 dex 文件与资源文件
java -classpath "/Users/leo/Library/Android/sdk/tools/lib/sdklib-26.0.0-dev.jar" com.android.sdklib.build.ApkBuilderMain ./build/fair.apk -v -u -z ./build/resources.ap_ -f ./build/classes.dex
  • 生成 debug 签名
jarsigner -verbose -keystore ~/.android/debug.keystore -storepass android -keypass android ./build/fair.apk androiddebugkey
  • 安装
adb install -r ./build/fair.apk
  • 总结
    -f 如果编译出来的文件已经存在,进行强制覆盖。

-M AndroidManifest.xml的路径

-I 某个版本平台的android.jar的路径

-S res文件夹路径

-J 指定生成的R.java的输出目录

-m 使生成的包的目录放在-J参数指定的目录。

-A assert文件夹的路径

-bootclasspath <路径> 覆盖引导类文件的位置

-d <目录> 指定放置生成的类文件的位置

你可能感兴趣的:(手动构建apk)