Phonegap 2.4 Android Proguard配置

时间:2013-02-26 11:06:33

标签: android cordova proguard

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

正如我所说,这只是在构建过程中运行Proguard obfs时。如果我关闭Proguard它一切正常。我将我的所有代码恢复到2.0以确定并且这一切都很好所以在某个地方出现了一个看似没有记录/或者还没有人发现的变化(2.4仅在几周前出现 - 在写作时间2013年第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似乎没有任何亮点 - 一切看起来都很好......

任何人有任何想法???

2 个答案:

答案 0 :(得分:11)

尝试使用以下行替换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

答案 1 :(得分:0)

Phonegap插件被排除在最终APK之外我猜。 Cordova.js可能甚至不存在错误。