apk的诞生:
所需环境:jdk / jre / sdk/tool/ sdk/platform-tools sdk/build-tools/26.0.0(版本可变)
1、把res / assets /androidManifest.xml 生成R.java 与及 res.ap_
命令如下:(严格区分大小写)
aapt package –min-sdk-version 19 –target-sdk-version 26 -f -m -J C:\Users\Administrator\Desktop\mytest -S res -A assets -I
C:\Users\Administrator\AppData\Local\Android\Sdk\platforms\android-19\android.jar -M AndroidManifest.xml -F C:\Users\Administrator\Desktop\mytest\res.ap_ –auto-add-overlay
可变参数的解释:
C:\Users\Administrator\Desktop\mytest:生成的R.java文件目录
C:\Users\Administrator\AppData\Local\Android\Sdk\platforms\android-19\android.jar:jar build的版本
C:\Users\Administrator\Desktop\mytest\res.ap_:res assets androidManifest.xml的压缩文件(包含resources.arsc / res / assets /androidManifest.xml)
注意:指定版本号和版本名需要在androidmanifest.xml 配置android:versionCode=”403” android:versionName=”4.03.0”
不可变参数解释:
–min-sdk-version 指定最小版本(开头双 - - 杠,因为查看的时候会被转成单 -)
–target-sdk-version 指定目标版本(开头双 - - 杠,因为查看的时候会被转成单 -)
-m -J 指定R.java 文件的生成目录
-S 指定res资源
-A 指定assets资源
-I 指定android.jar
-M 指定AndroidManifest.xml
-F 指定资源压缩文件(资源索引文件)
-f 如果文件存在则删除覆盖
–auto-add-overlay 覆盖重复资源和 -f 同用(开头双 - - 杠,因为查看的时候会被转成单 -)
2、通过aidl生成接口java文件
3、把所有的java文件一起编译生成class文件(注意必须一起编译,否则编译出错,提示找不到类)
命令如下:
需要同时编译所有文件
javac *.java -cp C:\Users\Administrator\AppData\Local\Android\Sdk\platforms\android-19\android.jar
不同包下的文件
javac com\example\dd*.java com\example\test*.java -cp C:\Users\Administrator\AppData\Local\Android\Sdk\platforms\android-19\android.jar
如果出现错误试下这种方式,指定编译的jdk版本:
javac -source 1.6 -target 1.6 R.java
参数解释:
-cp 把某些class文件加入编译环境中参与编译,否则提示找不到android 类
4、生成jar文件
jar cvf all.jar com
com 为包的根目录
all.jar 为jar名
5、生成dex文件(可能出现编译错误,可能是因为编译的版本不同,需要步骤三处理)
dx –dex –output=classes.dex all.jar
classes.dex 为输出的dex文件
5、生成未签名apk
命令如下:
java -cp C:\Users\Administrator\AppData\Local\Android\Sdk\tools\lib\sdklib.jar com.android.sdklib.build.ApkBuilderMain test.apk -v -u -z res.ap_ -f classes.dex -rf unknown -nf lib
参数解释:
-cp 指定sdklib.jar的路径(在SDK/tool/lib/目录下)
com.android.sdklib.build.ApkBuilderMain 指定执行的类文件(不可改变)在Sdk\tools\lib\sdklib.jar中
test.apk 生成未签名的apk文件名
-z 指定步骤一生成的压缩文件 res.ap_
-f 指定步骤三生成的classes.dex文件
-v -u (不可改变)
-rf 指定第三方jar和其中的资源文件,拷贝到apk指定位置(例如解包生成的unknown文件夹)
-nf 指定so库文件
5、签名apk(工具在jdk/bin/jarsigner.exe下)
命令如下:
jarsigner -verbose -keystore keystore.keystore -storepass qdazzle -signedjar testsing.apk test.apk shushan-release-key.keystore
参数解释 :
keystore.keystore 签名文件
qdazzle 密码
testsing.apk 签名后apk
test.apk 未签名apk
shushan-release-key.keystore 别名(alias)
其他参数不可变