7

ビルドを Phonegap (Cordova) 2.0 から 2.4 にアップグレードしましたが、最終リリースの apk を実際にテストするまで、dev ですべて正常に動作していました。多くの時間を無駄にした後、私が見つけたのは、何らかの理由でビルドを実行すると、プロガード構成が何らかの方法で phonegap ビルドを壊しているということです。つまり、実行時に deviceready が呼び出されないことを意味します。ビルド時も実行時もエラーはないようですが、デバイスでコンパイル/ログエラーが発生しないため、コードバ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.**

そして、デックスを逆コンパイルしても、何の光も投げかけないようです-一見するとすべてが問題ないように見えます...

誰にもアイデアはありますか?

4

2 に答える 2

11

proguard-project.txt の Cordova の「keep」設定を次の行に置き換えてみてください。これにより、パブリックとプライベートの両方のすべての Cordova クラス、フィールド、およびメソッドが維持されます (したがって、deviceready が再度有効になります)。

-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
于 2013-03-11T16:07:21.877 に答える
0

Phonegap プラグインは、私が推測する最終的な APK から除外されています。Cordova.js はおそらく存在しないため、エラーが発生することさえありません。

于 2013-02-26T11:34:09.627 に答える