Phonegap 2.4 Android Proguard配置

我已经将一个版本从Phonegap(Cordova)2.0升级到2.4,并且一切都在开发中工作正常,直到我真正来测试最终版本apk.在经过大量浪费之后,我发现的是,由于某些原因,现在当我运行构建时,我的proguard配置以某种方式打破了phonegap构建,这意味着当它运行时,从未调用过设备.在构建时似乎没有错误,也没有任何错误,只要我能看到,但我猜测有些东西在cordova js中默默地失败,因为我没有在设备上获得编译/日志错误.

正如我所说,这只是在构建过程中运行Proguard obfs时.如果我关闭Proguard它一切正常.我将我的所有代码恢复到2.0以确保这一切都很好,所以在某个地方出现了一个看似没有记录/或者还没有人发现过的简单变化(2.4仅在几周前出现 – 在写作时间2013年2月26日).

我的Proguard配置包含以下的phonegap(以及其他一些标准配置)

-keep public class * extends com.phonegap.api.Plugin
-keep public class * extends org.apache.cordova.api.Plugin
-keep public class org.apache.cordova.DroidGap
-keep public class org.apache.cordova.**
-keep public class org.apache.**
-dontwarn android.webkit.*
-dontwarn org.apache.**

并且反编译dex似乎没有任何亮点 – 一切看起来都一目了然……

有人有主意吗???

解决方法

尝试使用以下行替换proguard-project.txt中的Cordova“keep”设置,该行应该维护所有Cordova类,字段和方法,包括公共和私有(以及因此重新启用设备):

-keep class org.apache.cordova.** {*; }

然后你只需要包括你的类(可能是扩展CordovaPlugin,而不仅仅是插件),例如

v3之前:

-keep public class * extends org.apache.cordova.api.CordovaPlugin

v3:

-keep public class * extends org.apache.cordova.CordovaPlugin

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...