使用命令行打包apk的过程

来源:互联网 发布:设计图纸软件下载 编辑:程序博客网 时间:2024/05/21 04:40

1. 使用aapt工具生成R.java文件

  >aapt package -f -m -M e:\workspace5\ApkBuildDemos\AndroidManifest.xml -S e:\workspace5\ApkBuildDemos\re -I D:\adt-bundle-windows-x86-20130522\adt-bundle-windows-x86-20130522\sdk\platforms\android-17\android.jar -J e:\workspace5\ApkBuildDemos\gen

说明:

-f 如果编译生成的文件已经存在,强制覆盖。-m 使生成的包的目录存放在-J参数指定的目录-M 指定AndroidManifest.xml的完整路径-S 指定res文件夹的路径-I 指定某个版本平台的android.jar文件的路径
2. 使用aidl工具将.aidl文件编译成.java文件

3. 使用javac工具将.java文件编译成.class文件

>javac -target 1.6 -bootclasspath D:\adt-bundle-windows-x86-20130522\adt-bundle-windows-x86-20130522\sdk\platforms\android-17\android.jar -d e:\workspace5\ApkBuildDemos\bin e:\workspace5\ApkBuildDemos\src\com\example\apkbuilddemos\MainActivity.java e:\workspace5\ApkBuildDemos\gen\com\example\apkbuilddemos\R.java

说明:

target <版本>               生成特定 VM 版本的类文件-bootclasspath <路径>        覆盖引导类文件的位置-d <目录>                    指定存放生成的类文件的位置-s<源文件路径>           指定查找输入源文件的位置
4.使用dx.bat批处理将众多.class文件转换成一个.dex文件

>dx --dex --output=E:\workspace5\ApkBuildDemos\bin\classes.dex e:\workspace5\ApkBuildDemos\bin\

说明:

–output=<要生成的classes.dex路径> <要处理的class文件的路径>

5. 使用aapt工具打包资源文件

>aapt package -f -M e:\workspace5\ApkBuildDemos\AndroidManifest.xml -S e:\workspace5\ApkBuildDemos\res 

-I D:\adt-bundle-windows-x86-20130522\adt-bundle-windows-x86-20130522\sdk\platforms\android-17\android.jar -F e:\workspace5\ApkBuildDemos\bin\resources.ap_

说明:

-f 如果编译生成的文件已经存在,强制覆盖-M 指定AndroidManifest.xml的路径-S 指定res文件夹路径-I 指定某个版本平台的android.jar的路径-A 指定assert文件夹的路径-F 指定输出文件完整路径
6.打包成apk

C:\Program Files (x86)\Android\android-sdk-windows\tools>apkbuilder e:\workspace5\ApkBuildDemos\bin\ApkBuildDemos.apk -v
 -u -z e:\workspace5\ApkBuildDemos\bin\resources.ap_ -f e:\workspace5\ApkBuildDemos\bin\classes.dex -rf e:\workspace5\ApkBuildDemos\src

说明:

-v Verbose 显示过程信息-u 创建一个无签名的包-z 指定apk资源路径-f 指定dex文件路径-rf 指定源码路径

7. 创建密钥

>keytool -genkey -alias release -keyalg RSA -validity 20000 -keystore release.keystore

-genkey      在用户主目录中创建一个默认文件”release.keystore”-alias       产生别名-keyalg      指定密钥的算法-validity    指定创建的证书有效期多少天-keystore    指定密钥库的名称(产生的各类信息将不在.keystore文件中)

8. 签名

>jarsigner -verbose -keystore release.keystore -storepass 931628 -keypass 931628 -signedjar e:\workspace5\ApkBuildDemos\bin\ApkBuildDemos-Signed.apk E:\workspace5\ApkBuildDemos\bin\ApkBuildDemos.apk release

-verbose  签名/验证时输出详细信息-keystore 密钥库位置-storepass   用于密钥库完整性的口令-keypass    专用密钥的口令(如果不同)-signedjar   已签名的 JAR 文件的名称 (第一个apk是签名之后的文件, 第二个apk是需要签名的文件)

0 0
原创粉丝点击