首页 >> 大全

用ant的build

2023-09-03 大全 23 作者:考证青年

(1).生成用于应用的R.java;

(2).编译所有java文件为class文件;

(3).打包class文件和jar包为.dex;

(4).打包和res资源为资源压缩包(例如res.zip,名字可以自己定义);

(5).构建.dex和res.zip生成未签名的APK;

(6).生成有签名的APK;

(7).对签名包进行优化;

注意这里的目录跟上一篇的文章的目录是有区别的,上一篇的内容是为了演示方便,才把生成的文件都存放在桌面的ant文件的gen目录和bin目录下,本篇默认路径都是cd到工程目录的根目录下,所以生成的文件也存放在工程目录原有的gen文件夹和bin文件下。

在工程开始之前,我们先要指定一些常量或者属性以及做一些初始化操作

                                         start initing ...                   finish initing.     

这里主要定义了的sdk目录,java的home目录以及tools工具和工具,后初始化文件夹。对于="env"这个属性常量,我很诧异,因为在我的mac电脑上,无论我怎么测试都读不到我定义的java和环境变量,最终还是选择了绝对路径定义(如有知晓原因,请劳烦给我留言,谢谢!)。

1.生成用于应用的R.java

aapt package -f -m -J gen -S res -M AndroidManifest.xml  -I /Users/zejian/Documents/androidStudio/SDK/platforms/android-22/android.jar 

参数含义如下:

-f如果编译生成的文件已经存在,强制覆盖。

-m使生成的包的目录存放在-J参数指定的目录

-J指定生成的R.java的输出目录路径(存放在桌面的gen)

-S指定res文件夹的路径

-I指定某个版本平台的.jar文件的路径(我使用的是API-22)

转换成ant(注意依据当前项目的根目录)

        1.正在生成用于应用的R.java存放到gen(使用aapt) ...                              步骤1已经完成...  

2. 编译所有java文件为class文件

javac -target 1.7 -bootclasspath /Users/zejian/Documents/androidStudio/SDK/platforms/android-22/android.jar -d bin src/com/example/command4ant/*.java gen/com/example/command4ant/R.java

含义如下:

- 生成特定 jdk 版本的类文件

- 覆盖引导类文件的位置

-d 指定存放生成的类文件的位置

- 指定查找输入源文件的位置

转换成ant(注意依据当前项目的根目录)

 2.正在编译所有java文件为class文件(包含src和gen目录)...           步骤2已经完成... 

3. 打包class文件和jar包为.dex

dx --dex --output=bin/classes.dex bin

参数含义如下:

--=

转换成ant(注意依据当前项目的根目录)

       3.正在打包class文件和jar包为classes.dex...                 步骤3已经完成...   

4. 打包和res资源为资源压缩包(例如res.zip,名字可以自己定义)

aapt package -f -M AndroidManifest.xml -S res -I /Users/zejian/Documents/androidStudio/SDK/platforms/android-22/android.jar -A assets -F bin/res.zip  

参数含义:

-f 如果编译生成的文件已经存在,强制覆盖。

-m 使生成的包的目录存放在-J参数指定的目录

-S 指定res文件夹的路径

-I 指定某个版本平台的.jar文件的路径

-A 指定文件夹的路径

-F 指定输出文件完整路径

转换成ant(注意依据当前项目的根目录)

4.正在打包assets和res资源为资源压缩包res.zip...(include res, assets, AndroidManifest.xml)                                
步骤4已经完成...   

5. 构建.dex 和 res.zip 生成未签名的 APK

apkbuilder bin/unsigned_command4Ant.apk -v -u -z bin/res.zip -f bin/classes.dex 

参数含义:

第一个参数是存放打包后的文件完整路径

-v 显示过程信息

-u 创建一个无签名的包

-z 指定apk资源路径

-f 指定dex文件路径

转换成ant(注意依据当前项目的根目录)

5.正在构建classes.dex和res.zip生成未签名的APK(unsigned.apk)...                   
步骤5已经完成...   

6. 生成有签名的APK

jarsigner -verbose -keystore debug4zj -storepass debug4zj -keypass debug4zj -signedjar bin/signed_command4Ant.apk bin/unsigned_command4Ant.apk debug4zj  

参数含义:

- 签名/验证时输出详细信息

- 密钥库路径

- 用于密钥库完整性的口令(密码)

- 专用密钥的口令(密码)

- 已签名的 apk 文件的名称 (第一个apk是签名之后的文件, 第二个apk是需要签名的文件)

转换成ant(注意依据当前项目的根目录)

6.正在生成有签名的APK...                           
步骤6已经完成...   

7 .对签名包进行优化

zipalign -v 4 bin/signed.apk bin/zipalign_signed.apk  

参数含义:

-v输出详细信息

- 需要优化的apk 优化后的apk名称以及存放位置

转换成ant(注意依据当前项目的根目录)

 7.正在对签名包进行zipalign优化...     
步骤7已经完成...   

到此打包流程的转换成ant的build.xml就完成了,最后给出完成的 build.xml文件:

  
                                              start initing ...                   finish initing.       1.正在生成用于应用的R.java存放到gen(使用aapt) ...                              步骤1已经完成...   2.正在编译所有java文件为class文件(包含src和gen目录)...           步骤2已经完成...   3.正在打包class文件和jar包为classes.dex...                 步骤3已经完成...   4.正在打包assets和res资源为资源压缩包res.zip...(res, assets, AndroidManifest.xml)                               步骤4已经完成...   5.正在构建classes.dex和res.zip生成未签名的APK(unsigned.apk)...                  步骤5已经完成...   6.正在生成有签名的APK...                           步骤6已经完成...   7.正在对签名包进行zipalign优化...     步骤7已经完成...         
  

然后我们运行build.xml文件,运行log如下:

打包结果,我们查看一下项目的bin目录:

从图片中我们可以看出打包确实完成了,但细心的同学可能发现log里面又这么一个警告信息:

其实有这个警告的话本身对签名没有影响,但是总感觉不太爽,要想去掉这个警告只要在签名时加上如下代码即可:


这就为该签名包提供了时间戳的机构地址的认证链接,这样就不会报错啦。不过这个我在实际操作中发现,打包到签名时,用的时间特别久,原因就是要去提供的地址验证该时间戳的认证,所以我为了节省时间一般不加。完整代码如下:

      6.正在生成有签名的APK...                           步骤6已经完成... 

到此 使用ant的build.xml构建自动化打包 apk 就全部分析完。下一篇我会继续分析使用ant实现的多渠道打包,欢迎继续关注哈。

案例源码下载:

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了