Windows で create.bat を使用してアプリケーションを作成し、ADT と最新の SDK でコンパイルしました。
コルドバディスプレイを起動して表示しますが、「デバイスに接続しています」と言い続けるため、devicereadyイベントは発生しません。同じことがエミュレータにも当てはまります。ただし、エミュレータのOSを4.0に変更すると機能します。
4.2 がリリースされたばかりで、更新を待たなければならないので、これは正常ですか?
Android 4.2 を搭載した Nexus 7 で同じ問題が発生しましたが、AndroidManifest targetSdkVersion を「16」に変更すると機能します
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" /> (Before it was ="17")
これが誰かのために働くことを願っています。
ディエゴ
午前 1 時になり、ようやくアプリを再び実行できるようになりました。Android 4.2 には、明らかにセキュリティ関連の変更が webView.addJavascriptInterface に含まれており、デフォルトのブリッジ モードが機能しなくなります。
次のバージョンでより良い修正が行われることを期待していますが、迅速な修正が必要な場合は、CordovaWebView.exposeJsInterface へのこの更新を試してください。
private void exposeJsInterface() {
int SDK_INT = Build.VERSION.SDK_INT;
boolean isHoneycomb = (SDK_INT >= Build.VERSION_CODES.HONEYCOMB && SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2);
if (isHoneycomb || (SDK_INT < Build.VERSION_CODES.GINGERBREAD)) {
Log.i(TAG, "Disabled addJavascriptInterface() bridge since Android version is old.");
// Bug being that Java Strings do not get converted to JS strings automatically.
// This isn't hard to work-around on the JS side, but it's easier to just
// use the prompt bridge instead.
return;
} else if (SDK_INT < Build.VERSION_CODES.HONEYCOMB && Build.MANUFACTURER.equals("unknown")) {
// addJavascriptInterface crashes on the 2.3 emulator.
Log.i(TAG, "Disabled addJavascriptInterface() bridge callback due to a bug on the 2.3 emulator");
return;
} else if (SDK_INT == Build.VERSION_CODES.JELLY_BEAN_MR1) {
Log.i(TAG, "Disabled addJavascriptInterface() bridge callback for 4.2");
return;
}
this.addJavascriptInterface(exposedJsApi, "_cordovaNative");
}
私の場合、自動生成されたindex.htmlはphonegap.jsを参照していました
だから代わりに
<script type="text/javascript" src="phonegap.js"></script>
置いた
<script type="text/javascript" src="cordova.js"></script>
どうやらこれはPhonegap2.3.0で修正されています。
Android 4.2でもこの問題が発生しました。私のプロジェクトでは、Phonegap2.2を使用していました。
この簡単なアップグレード手順に従って更新されました-問題は解決しました。
したがって、2.3.0にアップグレードした後、設定android:targetSdkVersion="17"
は再びOKになります。
js ファイル (Index.js) のエラーを削除することで問題を解決しました。
JavaScript にエラーがないことを確認する必要があります。
これのもう 1 つの原因は、cordova-2.3.0.jar が cordova-2.3.0.js ファイルのバージョンと一致しない可能性があることです。