Android打包工具的制作(Java GUI)支持三种打包方式

Android开发过程中,打渠道包是最平常的需求了,简化打包过程和自动化就很有必要了,你可能会说现在的Android Studio的Gradle配置就很方便,就连Eclipse也可以通过写ant插件来编写build.xml(构建文件)也可以实现多渠道打包。确实没错,但是这种打包方式需要开发者每次都去配置,然后每次都要重新在编辑器中完成。有种打包需求是通过现有的母包apk,再打出多个渠道包,即得现有一个生成好的渠道包。比如游戏渠道平台就需要从cp方获得游戏母包,然后再自己根据渠道要求打渠道包。

首先先来了解一些基本事实:

Android构建过程:用到aapt(编译资源)、proguard(混淆代码)、apktool.jar(回编成一个未签名的apk)

1.Android在构建过程中会将res资源编译成R.java

2.R.java、java源代码、编译成jar再编译成dex,最终编译成smali代码

3.assets目录下的文件并不会编译

4.最终生成一个未签名的apk

签名过程:(先用Keytool.exe 生成keystore或者jks签名文件)

1.用jarsigner.exe 和keystore或者jks对未签名的apk签名时,是对整个未签名apk作用的,所以对生成已签名的apk做任何修改时,都会破坏签名,需要重新签名(即使是assets目录下的资源)

优化对齐过程

1.一般签名过的apk,还要用zipalign.exe工具进行对齐优化才是我们最终的apk



好了,以上是一般将项目代码编译成可用apk的大致过程(具体细节复杂的多),那么现在有了一个可用的apk,怎么利用它来打渠道包呢?

最主要的是我们apk中是怎么定义渠道标示的,这直接决定打包工具的制作也决定打渠道包的效率,一般主要分为以下几种:

方式一:.AndroidManifest.xml中用meta-data标签定义渠道标示

方式二:.assets目录下的渠道配置文件

方式三:.签名目录META-INF下定义渠道配置文件

分析:方式一:.AndroidManifest.xml中定义meta-data方式是用的最多的,如果我们拿到一个这样定义渠道表示的apk母包,那么我们怎么通过这个apk打渠道包?

1.用apktool反编译母包apk 。 常用命名:apktool d [apk]   (生成smali代码);apktool d -s [apk] (不生成smali代码)

2.然后再用代码动态修改AndroidManifest.xml中的渠道标示

3.然后用apktool回编成一个未签名的apk

4.用jarsigner.exe 和keystore或者jks来签名apk

5.最后再zipalign.exe优化apk,生成最终的渠道包

注意:该种方式的渠道标示是在AndroidManifest.xml中,所以一定要经过apktool的反编译和回编,所以效率低

           方式二:我们知道在构建apk的过程中assets目录下的资源不会被编译,所以这种方式我们不需要用apktool来反编译母包apk,所以步骤如下:

1.直接解压或者用7zip命名来动态修改assets中的渠道表示标示

2.用jarsigner.exe 和keystore或者jks来签名apk

3.最后再zipalign.exe优化apk,生成最终的渠道包

注意:因为渠道表示在assets目录下,所以不需要反编译和回编,但是还得重新签名和优化,因为只有修改META-INF目录下的资源才不用重新签名,所以该种方式比方式一要快

          方式三:该种方式是当前生成渠道包较快的方式,因为不需要反编译、回编、不需要重新签名,步骤:

1.直接解压或者用7zip命名来动态修改META-INF中的渠道表示标示
注意:该种方式打渠道较快

经过以上分析我们就可以结合javaGUI来制作我们的图形化工具了(其实就是对上述三种打包方式分析结合GUI的代码实现),这样我们就可以提供给运营人员来用了



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值