-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
zip里添加注释,然后用apksigner签名,目前会抛出异常 #52
Comments
您要添加什么注释信息? 我们目前觉得注释区没啥需求 有注释的apk会直接报错,不生成渠道包 |
1.我要对接入我们sdk的应用,进行2次打入渠道号,那么这种情况下,可能会出问题(不可控) |
注释区写入信息后 v2的签名会有问题 详见博客 |
签名是针对apk的 所以你说的sdk我并不是特别理解。 |
或者你的channel直接写成 meituan-ceshi-xiaomi ? |
我在生成apk后,再写入注释,再v2签名,把这个作为母包。不是先v2签名,再写入注释,不确定有些应用会不会这么操作。 比如分发平台,会让对接的应用使用平台的提供的sdk,平台拿到包后,会再次打入渠道号,而应用自己也会有渠道号的。 所以比较理想的情况注释不要抛出异常,渠道工具提供另外的id写入渠道,不覆盖对方的渠道号。 |
分开两种你说的情况:
另:以前是否使用过美团的一代打包呢? 一代时候你们怎么处理的? |
主要包是别人的,行为不可控,(怕接入的app这么做)。 |
那现在也可以啊 我们提供jar给服务器写入能力,meta-inf可以干的你们都可以写啊。 我不清楚你纠结的啥》 |
对于注释区的话,短期内应该没有提供能力的打算,欢迎给我们提交pr吧 |
注释区我来改改吧 多次写入渠道待定吧 |
@GavinCT 不知道第二代稳不稳定啊? 刚刚接到多渠道打包的需求,前段时间研究了一代,然后发现有个问题是接入的友盟SDK等,读取的渠道包是写死在AndroidManifest.xml中的 UMENG_CHANNEL 字段,不能去更改,因此打算用自己公司开发的大数据SDK,然后在代码中去读取美团方案弄出来的渠道包。 |
@ouyangpeng 你应该单独开issue。。。
|
@GavinCT 已经单独开了issue |
@ouyangpeng 友盟SDK可以用 |
@GavinCT 对于注释的处理,你可以看google apksigner的ZipUtils里面的方法,其实就是倒着找EOCD的signature,很简单 |
是啊 不难啊 最近在忙啊 再等等吧 |
也欢迎各位提交pr 一起完善啊 @truebit |
哈哈,我嫌弃Java处理二进制的方式(ByteBuffer真难用),用python写了个脚本处理渠道包的 |
哎 我们上班基本也都在忙自己的 最近的代码提交都是周五晚上或者周六的。。。 所以这个感觉不是很重要紧急的问题就拖了几个版本 我们尽快完善起来 |
有空的话我给你提个java版的PR 😉 下面是python版的 with open(self.apk_file_path, 'rb') as fp:
scan_offset = self.apk_size - ZIP_EOCD_REC_MIN_SIZE # try to get End of central directory signature
if scan_offset < 0:
raise APKSignV2ParseError("File too short to be a zip file: "
+ self.apk_size)
stop_offset = scan_offset - MAX_COMMENT_SIZE # largest comment size
if stop_offset < 0:
stop_offset = 0
while True:
fp.seek(scan_offset)
if self.to_le_int(fp.read(4)) == ZIP_EOCD_REC_SIG: # End of central directory signature
fp.seek(scan_offset + 16) # Offset of start of central directory at index 16 from EOCD signature
return self.to_le_int(fp.read(4))
scan_offset -= 1
if scan_offset < stop_offset:
raise APKSignV2ParseError("EOCD not found; not a zip file?") 是不是觉得python读二进制简单多了🤣 |
大公司是不是都有开源kpi的要求哈 |
。。。你想多了 @caishengyan |
@caishengyan 开源完全看个人对开源的态度。而且越大的公司代码开源越有一堆政策、版权、安全等等的考虑,更加麻烦。 |
@truebit 看了友盟文档,之前已经设置好了。 |
1.1.3版本已经发布,修复此问题 @zuijinbuzai |
WalleChannelReader.getChannel(this.getApplicationContext()); |
@SunnyLy 问题记得以后单开issue |
我们运营总监要求,要集成到PHP后台提供分渠道打包的功能,集成到公司的OA里,方便大家操作。 |
@qq363685855 自己了解APK v2 sign的原理,用各种语言都可以实现。 |
java.lang.NoSuchMethodError: No virtual method a()Ljava/util/Iterator; in class Lorg/json/JSONObject; or its super classes (declaration of 'org.json.JSONObject' appears in /system/framework/core-libart.jar) |
apksigner校验ok,可正常安装到7.0设备,导出也带注释信息
The text was updated successfully, but these errors were encountered: