apk分包思路(一)meta-data

相信有不少朋友都遇到过分包的问题,比如说运营需要查看各个渠道的用户情况,这时候就需要使用我们的分包了,现在我就来分享一下比较分包思路。

这个分包思路是从AndroidManifest.xml文件中的 application节点下的meta-data节点来获取所在的包是什么渠道的,然后请求服务端去统计数据。

<manifest>
	<application>
		<activity>
			...
		</activity>
		
		<meta-data android:name="game_id" android:value="1"/>
        <meta-data android:name="channel_id" android:value="1"/>
        <meta-data android:name="channel_name" android:value="meituan"/>
	</application>
</manifest>

我在这里的xml代码就做简写了,就不复制所有的代码了,meta-data 节点是是与activity节点是同一级的。

然后再从代码里面去获取mate节点中的value就行了

    fun getGameId(): Int {
        val applicationInfo =
            packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
        val gameId = applicationInfo.metaData.getInt("game_id")
        return gameId
    }

    fun getChannelId(): Int {
        val applicationInfo =
            packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
        val channelId = applicationInfo.metaData.getInt("channel_id")
        return channelId
    }

    fun getChannelName(): String {
        val applicationInfo =
            packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
        val channelName = applicationInfo.metaData.getString("channel_name")
        return channelName!!
    }

做好了代码里面的获取之后,然后再做我们的修改这个mate-data的操作

使用apktool这个反编译的工具反编译 -> 修改mate-data -> 合成apk包 -> 签名

当然,我们做这个的前提是,要配置好java环境,这个就不用我多说了。然后下载apktool这个反编译文件点这里跳转下载最新的apktool.jar文件

下载到最新文件之后进行我们的反编译操作

1.使用cd命令进入到你要操作的文件夹内

2.反编译
java -jar apktool_2.6.1.jar apktool d app.apk
当然还有更多的用法,比如说是文件夹存放位置等操作。可以使用java -jar apktool_2.6.1.jar help查看帮助


3.修改反编译出来的app文件夹内的AndroidManifest.xml文件中的mate-data节点的value内容。比如说channel_name 是不是meituan,是huawei或者是xiaomi等等都可以

4.修改之后就要进行合包了,还是用之前的命令行
java -jar apktool_2.6.1.jar b -o E:\develop\apktool\app1.apk app
这个命令的意思是app文件夹进行合包,合成出来的包是在E:\develop\apktool\app1.apk,-o是输出路径的意思
当然这个 -o E:\develop\apktool\app1.apk也可以不写
比如说这样:java -jar apktool_2.6.1.jar b app

5.签名,这里使用的是v2签名
E:\develop\apktool>java -jar 你的sdk路径\build-tools\随便一个版本(前提是支持v2的版本)\lib\apksigner.jar sign --ks 签名文件路径 --ks-key-alias 签名文件别名 --ks-pass pass:密码 --key-pass pass:密码 --out 签名后的文件 未签名的文件

然后就可以安装在手机上测试效果了。

当然,这种比较传统的打包方式有很大的缺点,缺点就是反编译和合包这种放在服务器上的话,会比较的占用内存资源。所以还有更简单的方法,下一篇文章更新另外的分包方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值