转[Android]APK打包过程详解(二)

简介:
+关注继续查看
此博文是引用自:http://jojol-zhou.iteye.com/blog/729254 
jojol-zhou给予大家实际使用命令的具体例子,对于想深入研究APK是怎么打包出来的同学很有帮助,特转载在此。 

【详细步骤】: 

1使用aapt生成R.java类文件 
例: 
F:\explorer\android-sdk-windows2.2\tools>f:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -m -J F:\explorer\AndroidByread\gen -S res -I f:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -M AndroidManifest.xml 
其中  -f -m -J F:\explorer\AndroidByread\gen 代表按覆盖的形式在gen目录下生成带包路径的R.java,-S res指定资源文件 ,-I f:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar 指定使用的android类,-M AndroidManifest.xml指定程序的配置文件 

aapt Usage: 
fb069089-38dc-3b15-b2dc-8c2a9314034f.png 


2使用android SDK提供的aidl.exe把.aidl转成.java文件: 
usage: aidl OPTIONS INPUT [OUTPUT] 
       aidl --preprocess OUTPUT INPUT... 

OPTIONS: 
   -I<DIR>    search path for import statements. 
   -d<FILE>   generate dependency file. 
   -p<FILE>   file created by --preprocess to import. 
   -o<FOLDER> base output folder for generated files. 
   -b         fail when trying to compile a parcelable. 

INPUT: 
   An aidl interface file. 

OUTPUT: 
   The generated interface files. 



3第三步 编译.java类文件生成class文件: 
例:F:\explorer\AndroidByread>javac -encoding GB18030 -target 1.5 -bootclasspath F:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -d bin src\com\byread\reader\*.java gen\com\byread\reader\R.java
4490f4e0-d409-3ee1-af63-2ccfbb4b2e7e.png 


4使用android SDK提供的dx.bat命令行脚本生成classes.dex文件: 
beec491b-c5ed-36bd-a550-bd4d3e5b8142.png 
例: 
F:\explorer\AndroidByread>F:\explorer\android-sdk-windows2.2\platforms\android-3\tools\dx.bat --dex --output=F:\explorer\AndroidByread\bin\classes.dex f:\explorer\AndroidByread\bin\classes 
其中classes.dex为生成的目标文件,f:\explorer\AndroidByread\bin\classes为class文件所在目录 

5使用Android SDK提供的aapt.exe生成资源包文件(包括res、assets、androidmanifest.xml等) 
F:\explorer\AndroidByread>F:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I F:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -F bin\byreadreader 
将AndroidManifest.xml,res和assets文件夹中的资源文件打包生成byreadreader,用法参见1 

6第六步 生成未签名的apk安装文件 
apkbuilder  ${output.apk.file} -u -z  ${packagedresource.file} -f  ${dex.file}  -rf  ${source.dir}  -rj  ${libraries.dir} 
1a49ff1c-abb6-3ca3-b36b-e03ec2186d72.png 
例: 
F:\explorer\AndroidByread>f:\explorer\android-sdk-windows2.2\tools\apkbuilder.bat f:\explorer\byreadreader.apk –v -u -z f:\explorer\AndroidByread\bin\byreadreader -f f:\explorer\AndroidByread\bin\class.dex -rf F:\explorer\AndroidByread\src 
其中f:\explorer\byreadreader.apk为生成的apk ,-z f:\explorer\AndroidByread\bin\byreadreader为资源包,f:\explorer\AndroidByread\bin\class.dex为类文件包 


7使用jdk的jarsigner对未签名的包进行apk签名: 
use jarsigner 
jarsigner  -keystore ${keystore} -storepass  ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias} 
例如: 
F:\explorer\android-sdk-windows2.2\tools>jarsigner –keystore f:\explorer\eclipse3.5\bbyread.keystore -storepass byread002 -keypass byread002 -signedjar f:\explorer\byread.apk f:\explorer\byreadreader.apk byread 
其中–keystore f:\explorer\eclipse3.5\bbyread.keystore 为密钥文件  -storepass byread002为密钥文件密码 byread 为密钥别名 -keypass byread002为密钥别名密码,-signedjar f:\explorer\byread.apk为签名后生成的apk文件 f:\explorer\byreadreader.apk为未签名的文件。 

参考:http://asantoso.wordpress.com/2009/09/15/how-to-build-android-application-package-apk-from-the-command-line-using-the-sdk-tools-continuously-integrated-using-cruisecontrol/
目录
相关文章
|
23天前
|
小程序 开发工具 Android开发
Donut多端框架小程序打包适配ios和安卓app
腾讯新出了一个 Donut 多端框架,可以直接将微信小程序转成 ios 和 安卓 app,小程序开发者工具里也集成了 app 相关升级、调试和打包的功能,终于可以一套代码开发出3个客户端了!
58 0
Donut多端框架小程序打包适配ios和安卓app
|
1月前
|
Android开发
Hbuilder打包android安装包流程
Hbuilder打包android安装包流程
|
3月前
|
Android开发
qt打包安卓报http请求错误
qt打包安卓报http请求错误
28 0
|
3月前
|
图形学 Android开发
Unity打包安卓报http请求错误
Unity打包安卓报http请求错误
43 1
|
4月前
|
Android开发
cocoscreator打包 android 无法访问appcompatactivity的问题
cocoscreator打包 android 无法访问appcompatactivity的问题
|
4月前
|
测试技术 Shell 持续交付
提升开发效率之利用GitLab CI/CD打包Android项目
提升开发效率之利用GitLab CI/CD打包Android项目
|
5月前
|
JavaScript 前端开发 Java
React-Native Android打包
React-Native Android打包
64 0
|
6月前
|
移动开发 缓存 JavaScript
Vue3.0入门 + Vant3.0移动端实践(三)使用Cordova打包Android App
Vue3.0入门 + Vant3.0移动端实践(三)使用Cordova打包Android App
|
6月前
|
资源调度 JavaScript Android开发
webapp打包为Android的apk包的一种方法
webapp打包为Android的apk包的一种方法
|
6月前
|
Java 开发工具 Android开发
Android修改aar包中的类文件并重新打包
Android修改aar包中的类文件并重新打包
483 0
热门文章
最新文章
相关产品
云迁移中心
推荐文章
更多