本文主要讲解使用命令行打包android工程成apk文件,我的android工程结构如图



1.创建key: 使用keytool.exe(位于%JAVA_HOME%\bin\keytool.exe)创建xxx.keystore,在命令行输入:
keytool -genkey -alias debug.keystore -keyalg RSA -validity 20000 -keystore debug.keystore

说明:
-genkey 产生密钥
-alias debug.keystore 别名
-keyalg RSA 使用RSA算法对签名加密
-validity 20000 有效期限2000天
-keystore debug.keystore

如果之前创建过xxx.keystore,第一步就可以省略,以后直接使用此xxx.keystore就可以了

2.签名:使用jarsigner.exe(位于%JAVA_HOME%\bin\jarsigner.exe)签名
jarsigner -verbose -keystore debug.keystore -signedjar demo_signed.apk demo.apk debug.keystore

说明:
-verbose 输出签名的详细信息
-keystore debug.keystore 密钥库位置
-signedjar demo_signed.apk demo.apk debug.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed.apk,要签名的文件demo.apk和密钥库demo.keystore

3.对齐:使用zipalign.exe(位于android-sdk-windows\tools\zipalign.exe)对齐
zipalign -v 4 demo_signed.apk demo_signed_aligned.apk

说明:
zipalign能够使apk文件中未压缩的数据在4个字节边界上对齐(4个字节是一个性能很好的值)


如果使用IDE工具开发android,可以通过IDE导出未签名的apk包。因此,知道上面几条命令就可以了。

如果你需要手动打apk包,请看下面打包过程

0.打开cmd,cmd目录
C:\Documents and Settings\user>


1.生成R.java文件
创建gen目录,如果F:\workspace\LBSDemo目录下没有gen目录,运行
mkdir F:\workspace\LBSDemo\gen

运行aapt命令生成R.java文件
aapt.exe package -f -m -J F:\workspace\LBSDemo\gen -S F:\workspace\LBSDemo\res -I H:\android-sdk-windows\platforms\android-7\android.jar -M F:\workspace\LBSDemo\AndroidManifest.xml

2.将.aidl文件转换成.java文件
aidl.exe -pH:\android-sdk-windows\platforms\android-7\framework.aidl F:\workspace\LBSDemo\src\com\lbs\aidl\Remote.aidl F:\workspace\LBSDemo\gen\com\lbs\aidl\Remote.java

3.将java文件编译成class文件
创建bin目录,如果F:\workspace\LBSDemo目录下没有bin目录,运行
mkdir F:\workspace\LBSDemo\bin

运行javac编译java文件
javac -encoding UTF-8 -target 1.5 -bootclasspath H:\android-sdk-windows\platforms\android-7\android.jar -d F:\workspace\LBSDemo\bin F:\workspace\LBSDemo\src\com\baidu\mapapi\*.java F:\workspace\LBSDemo\src\com\lbs\*.java F:\workspace\LBSDemo\src\com\lbs\util\*.java F:\workspace\LBSDemo\gen\com\lbs\R.java F:\workspace\LBSDemo\gen\com\lbs\aidl\Remote.java -classpath F:\workspace\LBSDemo\libs\baidumapapi.jar


4.生成.dex文件
dx.bat --dex --output=F:\workspace\LBSDemo\bin\classes.dex F:\workspace\LBSDemo\bin F:\workspace\LBSDemo\libs

5.生成资源包文件
aapt.exe package -f -M F:\workspace\LBSDemo\AndroidManifest.xml -S F:\workspace\LBSDemo\res -A F:\workspace\LBSDemo\assets -I H:\android-sdk-windows\platforms\android-7\android.jar -F F:\workspace\LBSDemo\bin\resources

6.生成未签名的apk包
apkbuilder.bat F:\workspace\LBSDemo\bin\LBSDemo.apk -v -u -z F:\workspace\LBSDemo\bin\resources -f F:\workspace\LBSDemo\bin\classes.dex -rf F:\workspace\LBSDemo\src -rj F:\workspace\LBSDemo\libs -nf F:\workspace\LBSDemo\libs

7.签名
H: && jarsigner -verbose -keystore debug.keystore -storepass android -signedjar F:\workspace\LBSDemo\bin\LBSDemo_signed.apk F:\workspace\LBSDemo\bin\LBSDemo.apk debug.keystore

签名需要当前目录在keystore目录下,否则出现下面错误
jarsigner: 找不到 H:\demo.keystore 的证书链。

8.对齐
zipalign -v 4 F:\workspace\LBSDemo\bin\LBSDemo_signed.apk F:\workspace\LBSDemo\bin\LBSDemo_signed_aligned.apk








更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. Android(安卓)studio中“import org.apache.http.Header; 不可用
  6. Android(安卓)Lock 使用
  7. Android下使用Logcat打印信息
  8. Android(安卓)UI: LinearLayout中layout_weight 属性的使用规则
  9. Android中得到布局文件对象三种方式

随机推荐

  1. 肝完这篇前端开发学习路线图,凌晨两点了
  2. [置顶] React Native Android(安卓)Cooki
  3. HTTP缓存
  4. Java中的泛型方法
  5. 搞懂Netty(3)编解码问题的解决
  6. 愿那只在天堂的猫,能够被温柔相待
  7. 凭啥Java的运行环境称虚拟机,Python的只能
  8. 数据结构之:二分搜索树
  9. ES Module
  10. 从webpack到rollup