使用dex2jar和jdgui2等工具,可以非常轻松地检查APK的内容. 我们正在尝试在我们的Cordova项目中使用Proguard来“保护”包含我们想要保密的信息的几个类(主要是解密我们试图为我们的客户保
我们正在尝试在我们的Cordova项目中使用Proguard来“保护”包含我们想要保密的信息的几个类(主要是解密我们试图为我们的客户保护的一些内容的密钥).
我们做不到.应用程序崩溃,或者没有混淆.
我们添加到build.gradle:
buildTypes { release { signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
我们的proguard.pro包含:
-keep class !com.smartmobilesoftware.** ( *; }
smartmobilesoftware是一个inAppPurchases插件.
在那个包中我们修改了几个类,没有proguard就可以很好地工作.
我发现以下“Proguard支持丢失”:https://issues.apache.org/jira/browse/CB-9269
在这里,Joe Bowser声称如下:“好吧,你不应该将ProGuard与Cordova一起使用,或者至少没有充分的理由使用它,因为你不能将它与minifyEnabled一起使用,这实际上使ProGuard正常工作.由于Cordova在整个地方都使用了Reflection,这是一个在没有proguard-rules.pro文件的情况下炸毁Cordova的好方法.“
我们试图通过告诉proguard除了com.smartmobilesoftware中的所有类(-keep class!com.smartmobilesoftware.**(*;})之外的所有类都应保持完整,以避免这个问题.
我不确定这是否是我们的代码(但代码在没有proguard的情况下工作正常),插件或proguard本身的问题.
我们没有看到任何有意义的错误.
我们在使用Cordova 2.2.0构建之前发布了应用程序,它使用了ANT和proguard以及另一个插件,它运行良好.所以我们想知道Cordove是否在proguard方面有所改变.
任何人都可以对这个问题有所了解吗?
看起来com.smartmobilesoftware包中的代码实现了Cordova插件.在这种情况下,您需要至少保留几个类,否则Cordova将无法在运行时正确找到它们(对于最近的Cordova版本):-keep class * extends org.apache.cordova.CordovaPlugin