当使用proguard for android应用程序时,反射方法不起作用

naw*_*wab 11 reflection android telephony proguard

当我使用proguard用于在android中使用反射使用telephonyservice apis的应用程序时,我正面临一个问题.

我已经定义了一个包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();
    }
Run Code Online (Sandbox Code Playgroud)

现在没有proguard我可以使用这个api,但是当我使用proguard进行compliling时,它会给出classcastexception.我知道我需要在proguard.cfg文件中添加一些东西,我也尝试了几个东西,比如-dontshrink -dontoptimize,但它仍然没有用.

如果我遗漏了需要在该文件中添加的内容或此问题的任何其他解决方案,请告诉我.谢谢Nawab

Jak*_*ieł 18

这解决了问题:

-keep class com.android.internal.telephony.ITelephony { *; }
Run Code Online (Sandbox Code Playgroud)