由于是先写的word文档,所以排版不好,看不清的朋友可以直接下载附件里的doc。

有些网上的流程写的不全,所以做的时候出现许多问题,最后总结出了一套比较全面的流程,希望对大家有帮助!

Android命令行打包流程

流程图:

---------------------------------------------------------------------------

说明:

1.$AndroidSDK对应sdk路径

2.$AndroidProject对应 需打包的项目路径

3.android-XXsdk版本号,如2.2对应8,可在default.properties中查到当前版本号

注意:所有命令均在$AndroidProject路径下执行

参考:

http://www.189works.com/article-38119-1.html

http://www.cnblogs.com/jk1001/archive/2010/08/05/1793216.html

<!--[if !supportLists]-->1. <!--[endif]-->使用aapt生成R.java类文件

$AndroidSDK\platform-tools\aapt package -f -m -J gen -S res -I $AndroidSDK\platforms\android-X\android.jar -M AndroidManifest.xml

注:需要进入$AndroidProject应用程序目录执行,否则会 找不到文件的错误(ERROR: resource directory 'res' does not exist!

<!--[if !supportLists]-->2. <!--[endif]-->编译.java类文件生成class文件

javac -encoding UTF-8 -target 1.5 -bootclasspath $AndroidSDK\platforms\android-X\android.jar -d bin src\*.java gen\cn\talico\ereader\R.java gen\org\geometerplus\android\fbreader\api\ApiInterface.java gen\org\geometerplus\android\fbreader\network\BookDownloaderInterface.java -classpath $AndroidProject\libs\$JarName.jar

注:src\*.java要替换为取所有子目录java文件的命令

-classpath后接引用的jar包 注意多个jar包用;分割

<!--[if !supportLists]-->3. <!--[endif]-->使用Android SDK提供的dx.bat命令行脚本生成classes.dex文件

$AndroidSDK\platform-tools\dx --dex --output=$AndroidProject\bin\classes.dex $AndroidProject\bin

<!--[if !supportLists]-->4. <!--[endif]-->再次使用Android SDK提供的aapt.exe生成资源包文件(包括resassetsandroidmanifest.xml等)输出到bin目录下的temp.ap_

$AndroidSDK\platform-tools\aapt package -f -M AndroidManifest.xml -S res -A assets -I $AndroidSDK\platforms\android-X\android.jar -F bin\temp.ap_

注:temp.ap_为生成的临时资源文件,名字与下一步一致

<!--[if !supportLists]-->5. <!--[endif]-->利用AndroidSDK提供的apkbuilder工具生成未签名的APK文件

$AndroidSDK\tools\apkbuilder $AndroidProject\bin\$ProjectName.apk -v -u -z $AndroidProject\bin\temp.ap_ -f $AndroidProject\bin\classes.dex -rf $AndroidProject\src -nf $AndroidProject\libs -rj $AndroidProject\libs -d

注:$ProjectName.apk为生成的apk的名字

<!--[if !supportLists]-->6. <!--[endif]-->利用JAVASDK提供的keytools工具生成证书文件

keytool -genkey -alias ${alias}-keyalg RSA -validity ${validity} -keystore ${keystore} –dname "CN=${CN},OU=${OU},O=${O},L=${L},ST=${ST},C=${C}" -keypass ${ keypass } -storepass ${storepass}

注:

${alias}生成的keystore别名

${validity}证书文件有效时间,单位年

${keystore}生成证书的名称,一般等于${alias}即可

${CN}为名字 姓氏

${OU}为单位

${O}为组织

${L}城市 区域

${ST}省 洲

${C}两字母国家代码

${ keypass }密码

${storepass}证书密码 一般等于${ keypass }即可

例如:keytool -genkey -alias HelloWorld.keystore -keyalg RSA -validity 1000 -keystore HelloWorld.keystore -dname "CN=w,OU=w,O=localhost,L=w,ST=w,C=CN" -keypass 123456 -storepass 123456

<!--[if !supportLists]-->7. <!--[endif]-->最后一步,通过jarsigner命令用证书文件对未签名的APK文件进行签名

jarsigner -keystore ${keystore} -storepass ${storepass} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias}

注:

${signed.apkfile}为签名后生成的apk

${unsigned.apkfile}为之前生成的未签名的apk路径

例如:

jarsigner -keystore HelloWorld.keystore -storepass 123456 -keypass 123456 -signedjar b2.apk bin\a1.apk HelloWorld.keystore

-----------------------------------------------------------------------------------------------------------------

更多相关文章

  1. Android 笔记:读取配置文件config.properties
  2. Android模仿表单上传文件
  3. Android 基于高德地图路径规划
  4. 文件androidAndroid使用PULL解析和生成XML文件
  5. android通过JNI用C/C++创建本地文件
  6. android 开发之文件下载
  7. Android 第三方库使用实例——编写.so库文件
  8. android下的文件资源类型

随机推荐

  1. 【Android 应用开发】 Android APK 反编
  2. NCNN: 应用于手机上的卷积加速
  3. Android 电子罗盘 --指南针(方向传感器的
  4. [RK3288][Android6.0] 调试笔记 --- 替换
  5. 文章标题
  6. Android(安卓)中自定义 Menu 资源
  7. Android Volley框架(二):ImageRequest、Imag
  8. Android图像处理_浮雕效果
  9. Android获取Mac地址,支持android Q
  10. Android APK瘦身之Android Studio Lint (