我的代码是这样的:
// ITest.java
interface ITest {
}
// TestA.java
class TestA implements ITest {
}
// TestB.java
class TestB extends TestA implements ITest {
}
// main function
void main() {
TestB testB = new TestB();
Class[] interfaces = testB.getClass().getInterfaces();
// The count is 0 when gradle version is 7.x
int count = interfaces.length();
}
// build.gradle
android {
buildTypes {
debug {
minifyEnabled true
}
}
}
如果 gradle 版本为 7.x ,则
interfaces.length()
为 0。如:
Gradle version -> 7.6.3
Android Gradle plugin -> 7.4.2
如果gradle版本是6.x,则
interfaces.length()
为1。如:
Gradle version -> 6.5.1
Android Gradle plugin -> 4.1.2
如果gradle版本为7.x且
minifyEnabled false
,则interfaces.length()
为1。如:
Gradle version -> 7.6.3
Android Gradle plugin -> 7.4.2
android {
buildTypes {
debug {
minifyEnabled false
}
}
}
我必须在我的android项目中将gradle版本升级到7.x并且
minifyEnabled true
所以,我该如何解决这个问题???我预计 interfaces.length()
不是 0。
将以下 ProGuard 规则添加到您的
proguard-rules.pro
文件中:
# Keep the ITest interface
-keep interface your.package.name.ITest
将
your.package.name
替换为ITest
所在的实际包名。该规则指示 ProGuard 保留指定的接口并防止其在缩小过程中被删除。
添加此规则后,在启用缩小的情况下重建项目,
interfaces.length()
应返回预期值。