kid2682
kid2682
  • 发布:2018-04-25 21:11
  • 更新:2018-04-25 21:20
  • 阅读:1001

【报Bug】离线打包,PdrR 中的反射机制导致多渠道打包问题

分类:5+ SDK

我的项目中需要使用多渠道打包。
build.gradle中使用了applicationIdSuffix,打出来的包每个包名都不一样。
但是运行添加过applicationIdSuffix的apk,就是重定义过包名的apk。
启动不成功。报了一大堆error。调试后发现。

PdrR的getInt方法中有断代码使用了
Class.forName(a + ".R$" + var0)
其中a是在init方法中被赋值的。
a = context.getPackageName();

打包后的apk,R文件都在defaultConfig.applicationId的包中。
比如
defaultConfig.applicationId = a.b.c
productFlavors{
test{
applicationIdSuffix ".test"
}
}
最终生成的包为a.b.c.test,但是r文件在a.b.c.R导致一堆java.lang.ClassNotFoundException错误。

请我我要怎么配置才能成功进行多渠道打包

2018-04-25 21:11 负责人:无 分享
已邀请:
kid2682

kid2682 (作者)

现在用了很傻的办法,复制了源码,修改了init方法。

public static void init(Context var0) {  
    if (var0 != null) {  
        a = MyPdrR.class.getPackage().getName();  
    }  
}  

然后RInformation继承我MyPdrR

该问题目前已经被锁定, 无法添加新回复