1

我使用 gradle 来构建应用程序。我在我的调试版本的 packageName 中添加了一个后缀。如下:

buildTypes {
    debug {
        packageNameSuffix ".debug"
    }
}

但是,我使用的其中一个库不能用于此。

我认为 lib 使用这样的代码来获取 R 类:

drawable = Class.forName(this.context.getPackageName() + ".R$drawable");

它抛出 java.lang.IllegalArgumentException: ResClass is not initialized。

R 的正确包是 com.xxx.R$drawable。由于我在包中添加了后缀,因此当 lib 想要使用反射获取类时,它会获取 com.xxx.debug.R$drawable。

有什么办法可以解决吗?顺便说一句,我无法修改 lib 的代码,因为它是一个 jar 文件。

4

1 回答 1

0

不知道它是否可以帮助你,我在不同的情况下看到了类似的问题。

R类只是一个类,例如当R包名与当前app包名不同时,有import com.xxx.yyy.R帮助。

可能您可以创建一个缺少的类作为具有正确包名称的类的祖先。当然,这会破坏您的非调试版本,因此您必须为调试版本添加此类并为非调试版本删除它。

于 2014-01-15T05:57:42.467 回答