在使用ProGuard对包含反射使用TelephonyService API的Android应用程序进行混淆时,我遇到了问题。
我定义了一个名为com.android.internal.telephony的包,并在其中复制了ITelephony.aidl文件。
这是我使用反射使用电信方法的代码片段。
Class<?> c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
com.android.internal.telephony.ITelephony telephonyService =
(com.android.internal.telephony.ITelephony) m.invoke(tm);
if(buttonInAction == acceptButton){
Log.v(TAG, "Answering the call");
telephonyService.answerRingingCall();
finish();
}
else{
Log.v(TAG, "Rejecting the call");
telephonyService.endCall();
finish();
}
现在我可以在不使用proguard的情况下使用这些API,但是当我使用proguard进行编译时,它会抛出ClassCastException异常。我知道我需要在proguard.cfg文件中添加一些内容,并且我也尝试了几个选项,如-dontshrink -dontoptimize,但仍然无法解决。
请告诉我是否遗漏了需要添加到该文件中的内容或任何其他解决此问题的方法。 谢谢 纳瓦布