因为要用到给测试工程打包所以学习了下Android自动打包的,那自动打包就必须对Android的打包步骤与命令有一定的了解
Android打签名包有三种形式:
第一种:通过eclipse 的工具进行打包,不断的下一步选择keystore文件即可。
第二种:纯命令行打包
第三种:命令行编译起来,使用ant工具进行打包
打包步骤:
1. 使用aapt工具打包资源文件,生成R.java文件
2. 用aidl命令生成相应java文件(如果工程中没用到则可以不用)
3. 将工程的资源编译编译到一个包里
4.dx命令,将class文件转换成.dex文件
5.aapt将资源文件打包,生成resources.ap_文件
6.apkbuilder命令,根据classes.dex文件和resources.ap_生成未签证的apk包
7.jarsigner命令,对未签名的apk包进行签名
详细命令如下:
1.使用aapt工具打包资源文件,生成R.java文件
【输入】Resource文件(工程中res中的文件)、Assets文件(另外一种资源)、AndroidManifest.xml文件、Android基础类库(Android.jar文件)
命令如下:
>aapt package –f -m -j D:\My_Projects\TestAPKNEW\gen\com\example\action02\test\R.java -S D:\My_Projects\TestAPKNEW\res -IE:\TOOL\android-sdk-windows_r21.0.1\platfo
rms\android-11\android.jar -MD:\My_Projects\TestAPKNEW\AndroidManifest.xml
[生成文件]:R.java
2. 用aidl命令生成相应java文件(如果工程中没用到则可以不用)
aidl Person.aidl gen\person.java
根据包中的Person.aidl文件,在gen对应的目录中生成Person.java文件,
3). 将工程的资源编译编译到一个包里
aapt package -f -S <res目录>-I <android.jar目录> -A<assert目录> -M <AndroidManifest.xml目录> -F <输出的包目录>
命令如下:
>javac-encoding utf-8 -target 1.5 -d D:\My_Projects\TestAPKNEW\binD:\My_Projects\TestAPKNEW\src\com\targtime\mtll\test\*.javaD:\My_Projects\TestAPKNEW\gen\com
\example\action02\test\R.java-bootclasspath E:\TOOL\android-sdk-windows_r21.0.1\platforms\android-11\android.jar
-classpath D:\My_Projects\TestAPKNEW\libs\robotium-solo-4.3.jar
-d <目录> 指定存放生成的类文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-classpath<路径> 引导库文件,引用多个jar文件直接空格后增加jar目录即可
[生成文件]
bin目录下生成相关的class文件
4) dx命令,将class文件转换成.dex文件
dx --dex --output=<要生成的classes.dex路径> <要处理的类文件的路径>
命令如下:
>dx--dex --output=D:\My_Projects\TestAPKNEW\bin\classes.dex D:\My_Projects\TestAPKNEW\bin
[生成文件]bin/classes.dex 文件
5. aapt将资源文件打包,生成resources.ap_文件
D:\My_Projects\TestAPKNEW>aapt package-f -M AndroidManifest.xml -S res -A assets -I E:\TOOL\android
-sdk-windows_r21.0.1\platforms\android-11\android.jar -F bin\resources.ap_
【生成文件】bin\resources.ap_ 文件
6. apkbuilder命令,根据classes.dex文件和resources.ap_生成未签证的apk包
apkbuilder <APK输出路径> -u -z <需要添加的压缩资源包> -f <需要添加的文件> -rf <源文件所在的目录>
命令如下:
>apkbuilder D:\My_Projects\TestAPKNEW\bin\ant-unsigned.apk
-u -z D:\My_Projects\TestAPKNEW\bin\resources.ap_
-fD:\My_Projects\TestAPKNEW\bin\classes.dex
-rf D:\My_Projects\TestAPKNEW\src
-rf 参照源文件的目录的结构
-u 创建一个没有签名的包
-z 将某个压缩文件添加到包中
-f 将某个文件添加到保重
[生成文件] 未签名的apk包***.apk7.jarsigner命令,对未签名的apk包进行签名
jarsigner -keystore fyy.keystore -storepass123456 -keypass 123456 -signedjar new***.apk unsigned.apk fyy.keystore
fyy.keystore 签名文件
123456 签名密码
new***.apk:签完名的apk
unsigned.apk :未签名的apk
fyy.keystore:签名文件别名
[生成内容] 签名的apk
感谢:http://www.cnblogs.com/ondream/archive/2012/06/18/ant.html