Proguard警告:com.example.android.PaymentGateway:在类com.example.android.R $ id中找不到引用字段'int container_pg'

时间:2014-08-14 10:28:14

标签: android proguard

我在Android应用程序中使用proguard。需要添加它以使代码混淆并且难以进行逆向工程。

我在导出apk时遇到此问题。即使我使用-dontskipnonpubliclibraryclassmembers,Proguard也会低于警告。我不确定我需要做些什么来解决这个问题。

请提前协助并表示感谢。

[2014-08-14 15:48:28 - ] Warning: com.example.android.PaymentGateway: can't find referenced field 'int container_pg' in class com.example.android.R$id
[2014-08-14 15:48:28 - ] Warning: com.example.android.PaymentGateway$RetrieveEncKey: can't find referenced field 'int container_pg' in class com.example.android.R$id
[2014-08-14 15:48:28 - ]       You should check if you need to specify additional program jars.
[2014-08-14 15:48:28 - ] Warning: there were 2 unresolved references to program class members.
[2014-08-14 15:48:28 - ]          Your input classes appear to be inconsistent.
[2014-08-14 15:48:28 - ]          You may need to recompile them and try again.
[2014-08-14 15:48:28 - ]          Alternatively, you may have to specify the option 
[2014-08-14 15:48:28 - ]          '-dontskipnonpubliclibraryclassmembers'.
[2014-08-14 15:48:28 - ] java.io.IOException: Please correct the above warnings first.
[2014-08-14 15:48:28 - ]    at proguard.Initializer.execute(Initializer.java:321)
[2014-08-14 15:48:28 - ]    at proguard.ProGuard.initialize(ProGuard.java:211)
[2014-08-14 15:48:28 - ]    at proguard.ProGuard.execute(ProGuard.java:86)
[2014-08-14 15:48:28 - ]    at proguard.ProGuard.main(ProGuard.java:492)

1 个答案:

答案 0 :(得分:5)

来自Proguard troubleshooting guide

  

您编译的类文件与库不一致。你可能需要   重新编译类文件,或以其他方式将库升级到一致的版本。

     

[...]

     

如果您正在为Android开发,ProGuard会抱怨它无法解决问题   找到仅在最近版本中可用的方法   Android运行时,您应该更改您的构建目标   project.properties文件或build.gradle文件到该最新版本。   您仍然可以指定不同的minSdkVersion和不同的   AndroidManifest.xml文件中的targetSdkVersion。

如果您无法以这种方式解决问题,可以尝试-dontwarn com.example.android.R$id并查看您的应用程序是否运行尽管有警告,有时也是如此。