【问题标题】:Phonegap 2.4 Android Proguard configPhonegap 2.4 Android Proguard 配置
【发布时间】:2013-02-26 11:06:32
【问题描述】:

我已将构建版本从 Phonegap (Cordova) 2.0 升级到 2.4,并且在开发中一切正常,直到我真正开始测试最终版本的 apk。在浪费了很多时间之后,我发现,由于某种原因,现在当我运行构建时,我的 proguard 配置正在以某种方式破坏 phonegap 构建,这意味着当它运行时,永远不会调用 deviceready。构建时似乎没有错误,运行时也没有错误,据我所见,但我猜想在cordova js中有些东西正在默默地失败,因为我没有在设备上得到编译/日志错误。

正如我所说,这只是在构建过程中运行 Proguard obfs 时。如果我关闭 Proguard,一切正常。我将所有代码恢复到 2.0 以确保这一切都很好,所以在此过程中的某个地方出现了一个看似没有记录/或没有人击中的 stubble 更改(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 似乎没有任何亮点 - 一切看起来都很好......

有人有什么想法吗???

【问题讨论】:

  • 随机不相关(?)问题:您为什么使用 DroidGap 而不是 CordovaWebView?
  • 这可能是调查@Edward 的一个途径......我的应用正在扩展DriodGap - 因为它在2.0 之前就已经存在(我认为)。 proguard config -keep public org.apache.cordova 我从其他关于 proguard 和 phonegap 问题的帖子中获得。该应用程序启动正常并加载正确的网址,但似乎只有在加载 js 时出现问题。
  • 你可以使用cordova plugin proguard alfilatov.com/posts/…

标签: android cordova proguard cordova-plugin-proguard


【解决方案1】:

尝试将 proguard-project.txt 中的 Cordova“保留”设置替换为以下行,该行应维护所有 Cordova 类、字段和方法,包括公共和私有(从而重新启用 deviceready):

-保持类 org.apache.cordova.** { *; }

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

v3 之前的版本:

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

v3+:

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

【讨论】:

  • 你是冠军!直到现在我才想到。
【解决方案2】:

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

【讨论】:

  • js 是手动包含的,它托管在服务器上...我将开始逐步执​​行 JS 代码以准确确定它是否/在哪里失败。您可能是对的,当混淆运行并且 JS 静默失败时,插件可能丢失/重命名。我也让它通过 Weinre 运行,但同样没有报告任何解析/运行时 js 错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多