关于Android apk签名问题

大家都知道Android apk包都是zip压缩包,修改里面的任意文件都会破坏原先的签名。

但是最进公司多了个需求,就是从CP那儿拿包分给渠道,但是CP不会给每个渠道都从新打渠道包。(因为好多小渠道)

那就需要我们这边给包做些修改,这样我们这儿可以做到分渠道下发。当然不能修改原包的签名咯。

然后呢,各种尝试。

1、在apk里添加空目录,目录名做为渠道号。

这样确实可以做到,也不会破坏原包签名。但是遍历apk目录再找出渠道貌似麻烦些。

2、之后想到了Apk包里的一个META-INF目录

这个目录是打上签名后生成的,存储着Apk签名信息。

然后就想到他只会检测其他目录文件的变化,自己的未必检测。

尝试了下在此目录里添加文件,ok了。原签名没有被破坏,成功添加了一个新文件。

之后在程序里读出文件里的信息就好:

private String getMetaInfoChannelID() {
		String channel = "";
		try {
			InputStream channelStream = mContext.getClassLoader()
					.getResourceAsStream("META-INF/test.dat");

			if (channelStream != null) {
				InputStreamReader is = new InputStreamReader(channelStream);
				StringBuilder sb = new StringBuilder();
				BufferedReader br = new BufferedReader(is);
				String read = br.readLine();

				while (read != null) {
					sb.append(read);
					read = br.readLine();
				}

				channel = sb.toString();

				br.close();
				is.close();
				channelStream.close();
			}
		} catch (Exception e) {
			MyLog.printLog(e);
		}

		if (!channel.equals("")) {
			MyLog.printLog("meta-inf channel = " + channel);
		}
		return channel;
	}

这样就ok了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值