Java 我可以使用ProGuard模糊类的反射吗?
我有一个特定的类方法,我想使用Java 我可以使用ProGuard模糊类的反射吗?,java,android,reflection,proguard,Java,Android,Reflection,Proguard,我有一个特定的类方法,我想使用反射调用该类方法 以下是我的活动onCreate中的代码示例: try { aMethod = getClass().getDeclaredMethod("myMethodName", SomeParameter.class); } catch (NoSuchMethodException e) { e.printStackTrace(); } 当我直接从androidstudio运行它时,它可以工作,但是当我创建发布版本时,ProGuard不会自
反射调用该类方法
以下是我的活动onCreate中的代码示例:
try {
aMethod = getClass().getDeclaredMethod("myMethodName", SomeParameter.class);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
当我直接从androidstudio运行它时,它可以工作,但是当我创建发布版本时,ProGuard不会自动更改方法名称。我能做什么?提到了以下几点:
通常不可能计算出哪些类必须是
保留(使用其原始名称),因为类名可能是
例如,从配置文件读取。因此,你必须
在ProGuard配置中使用相同的简单方法指定它们
-保留选项
但是,在某些情况下,ProGuard会自动处理反射。具体如下:(请参阅文件以获取最新列表)
Class.forName(“SomeClass”)SomeClass.Class
SomeClass.class.getField(“someField”)
SomeClass.class.getDeclaredField(“someField”)
SomeClass.class.getMethod(“someMethod”,新类[]{})
SomeClass.class.getMethod(“someMethod”,新类[]{A.class})
SomeClass.class.getMethod(“someMethod”,新类[]{A.class,B.class})
SomeClass.class.getDeclaredMethod(“someMethod”,新类[]{})
SomeClass.class.getDeclaredMethod(“someMethod”,新类[]{A.class})
SomeClass.class.getDeclaredMethod(“someMethod”,新类[]{A.class,B.class})
AtomicIntegerFieldDupdater.newUpdater(SomeClass.class,“someField”)
AtomicLongFieldUpdater.newUpdater(SomeClass.class,“someField”)
atomicReferenceFieldDupdater.newUpdater(SomeClass.class,SomeType.class,“someField”)
因此,在我的例子中,我的错误是我使用getClass()
获取类,下面的一行非常有效
aMethod = MainActivity.class.getDeclaredMethod("myMethodName", SomeParameter.class);