Android手动编译打包

使用Java语言编写的Android应用程序从源码到安装包的整个过程,示意图如下,其中包含编译、链接和签名等:
[img]http://dl.iteye.com/upload/picture/pic/118970/b7c653ed-f167-35b1-a077-4fe8a99fc095.png[/img]
1.生成R.java文件
直接使用aapt命令取得R.java文件,具体命令格式如下
aapt.exe package -m -J E:\project\mobile\LocalCalc\build\android\gen -M E:\project\mobile\LocalCalc\build\android\AndroidManifest.xml -S E:\project\mobile\LocalCalc\build\android\res -I E:\lvbang\technology\mobile\android-sdk_r16-windows\android-sdk-windows\platforms\android-8\android.jar
执行后在-J指定的目录下存在R.java文件了
其中参数说明如下
-M 指定AndroidManifest.xml(配置文件)的路径
-J 指定R.java生成路径
-S 指定资源文件所在目录,
-I 指定要包含的Android平台类库
详细的参数描述可以参照aapt的文档说明
2.将.aidl文件编译成.java文件
AIDL是Android系统提供的一种进程间调用的方式,类似于IPC调用,通过aidl工具将使用Android Interface Definition Language描述的.aidl文件编译成包含java接口类的.java文件,然后进程间遵循这些接口进行相互调用。.aidl文件一般与程序源码文件存放在一起。aidl工具的用法可以在命令行直接输入aidl,查看帮助。
3.编译java成.class文件
这个就没有什么好说的了,直接用javac,将class文件编译到制定目录下就可以了
4.将.class文件转换成一个.dex文件

>dx --dex --output=<project>\bin\classes.dex <project>\bin\

--output 指明.dex文件的生成路径;后面为class所在的路径

需要注意的是,这里不能加上包路径,否则会报不匹配的错误,可能在批处理中已将添加包路径。成功后便在指定路径下生成了.dex文件

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

>aapt package -f -M <project>\AndroidManifest.xml -S <project>\res -A <build>\assets -I <platform>\android-10\android.jar -F <project>\bin\resources.ap_

对照R.java文件的生成,可以看到参数发生了变化,少了-m 和 -J,如果看aapt用法中的描述就知道,-m和-J是结对出现的,用以指明R.java文件的生成路径。-M、-S、-I之前都有提到,这里不再介绍。-F的作用是指明打包后的资源文件的路径,在最后一定要加上文件名,最好加上扩展名。这里参考Eclipse中自动编译时制定的.ap_后缀名。

6.使用apkbuilder生成未签名的apk安装文件

>apkbuilder <build>\test.apk -v -u -z <build>\resources.ap_ -f <build>\classes.dex -rf <project>/src
其中,apkbuilder后面的路径是生成的apk安装文件的路径,
-v参数的作用是指明执行中输出必要信息,
-u参数表示生成的是未签名的安装包,
-z表明打包了的资源文件的路径,
-f指明了.dex文件的路径,
-rf指明了源文件的目录。
详见帮助

(7)使用jdk中的jarsigner对apk安装文件进行签名

签名的目的是保证应用程序的开发者的唯一性,签名需要的东西除了jarsigner工具外还有密钥文件,即.keystore文件,
>jarsigner -keystore <key>\debug.keystore -storepass android -keypass android -signedjar <build>/test.apk <build>\test.apk androiddebugkey

-keystore 指明密钥文件的位置,
-storepass是用于密钥库完整性的口令,
-keypass是专用密钥的口令,
-signedjar 指明签完名的apk文件的路径,紧接着的是需要签名的apk的路径,最后面是密钥的别名。
debug.keystore的name和passwords信息是在SDK文档中找到的,具体内容如下:

The SDK tools create the debug keystore/key with predetermined names/passwords:
•Keystore name: "debug.keystore"
•Keystore password: "android"
•Key alias: "androiddebugkey"
•Key password: "android"
•CN: "CN=Android Debug,O=Android,C=US"

打包完成。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值