答えて
私はここにパーティーへの道後半ですが、私は正確にこれを持っていたが、必要。 iOS 7にはJavaScriptCore がネイティブに含まれています(ドキュメントが限られていても)使いやすいです。問題は、 Androidで似たようなものを使うことができない限り、私はそれを使いたくなかったということです。そこで私はAndroidJSCore projectを作成しました。それはあなたが大規模なWebViewと注入を必要とせずにAndroidでネイティブにJavaScriptコードを使用することができます。また、JavaとJavascriptの間で非同期で 呼び出しをシームレスに行うこともできます。
更新日27 3月17日: AndroidJSCoreの代わりにLiquidCoreが使用されています。 LiquidCoreはJavascriptCoreではなくV8に基づいていますが、本質的に同じです。 documentation on using LiquidCore as a raw Javascript engineを参照してください。
ドキュメントから:
...始めるためには、JavaScript JSContext
を作成する必要があります。 JSコード の実行はこのコンテキスト内で行われ、別のコンテキストは独立した仮想マシンであり、 は互いに対話しません。
JSContext context = new JSContext();
このコンテキスト自体はJavaScriptオブジェクトです。そしてそのようなものとして、そのプロパティを取得して設定することができます。 これはグローバルなJavaScriptオブジェクトなので、これらのプロパティは環境内のすべての後続コードの最上位レベルの になります。
context.property("a", 5);
JSValue aValue = context.property("a");
double a = aValue.toNumber();
DecimalFormat df = new DecimalFormat(".#");
System.out.println(df.format(a)); // 5.0
また、コンテキストでJavaScriptコードを実行することができます。
context.evaluateScript("a = 10");
JSValue newAValue = context.property("a");
System.out.println(df.format(newAValue.toNumber())); // 10.0
String script =
"function factorial(x) { var f = 1; for(; x > 1; x--) f *= x; return f; }\n" +
"var fact_a = factorial(a);\n";
context.evaluateScript(script);
JSValue fact_a = context.property("fact_a");
System.out.println(df.format(fact_a.toNumber())); // 3628800.0
ます。また、Javaで関数を書くが、JavaScriptにそれらを公開することができます。
JSFunction factorial = new JSFunction(context,"factorial") {
public Integer factorial(Integer x) {
int factorial = 1;
for (; x > 1; x--) {
factorial *= x;
}
return factorial;
}
};
これは、JavaScript関数を作成しますJavaScriptから を呼び出すと、Javaメソッドfactorial
が呼び出されます。これをJavaScript VMに渡すことができます。
context.property("factorial", factorial);
context.evaluateScript("var f = factorial(10);")
JSValue f = context.property("f");
System.out.println(df.format(f.toNumber())); // 3628800.0
私はちょうどAndroidJSCoreに試しましたが、それはかなりうまくいくようです!私はそれが32ビットマシン上でのみ動作することに気づいた。 64ビットのサポートを追加する予定ですか?ほとんどの新しい携帯電話は64ビットなので、それはかなり多くのショーストッパーです... – user2771609
はい。 2.1リリースでは、64ビットのサポートが予定されています。 NDKのコンパイラはGCC 4.9.2に基づいています。 JavaScriptCoreが依存するアトミックに関連するバグがあります。私は、問題を修正したGCC 4.9.3ビルドを開発中です。私はそれを働かせることができたら、私はそれを解放するでしょう。すぐにすべきだ。 –
ああ、素晴らしい!ありがとう、私は本当にそれを楽しみにしています。 – user2771609
Javascriptを使用してネイティブアプリを作成するようなものですか? Titanium Mobileのようなツールがあり、ウェブツールや言語を使ってネイティブアプリを作ることができます。
また、Web Appsを作成することもできます。そこには多くのリソースとチュートリアルがあります。単に「Android Web Appチュートリアル」などの検索を行います。
はい、できます。ちょうどhtmlページを指し、javascriptとcssが含まれているラップアップコードを作成できます。
これであなたを助けることができる別のライブラリがあります。
- 1. JavaScriptでAndroidのリソース
- 2. Android/iPhoneでのJavaScriptデバッグ
- 3. Android webViewのJavascript
- 4. AndroidのJavascript「document.cookie」?
- 5. Android Webview JavaScriptをJavascriptで挿入する
- 6. AndroidのJavaのコンテキストでは、Android上でJavaでのJavaScript
- 7. Android webview javascriptのバグ
- 8. Androidで遅いJavascriptタッチイベント
- 9. AndroidのPhonegapでSenchaのjavascriptファイルにアクセス
- 10. javascript on android
- 11. android java call javascript
- 12. Android、Javascript、Rhino、JSON
- 13. Android Androidブラウザとリルート(JavaScript)の検出
- 14. JWPlayer Android用のJavascript API Webview
- 15. AndroidスタジオのJavaScript機能
- 16. Androidブラウザのキャッシュとjavascript
- 17. Android WebView Java-Javascriptブリッジ
- 18. Android WebView:コールアクティビティメソッドフォームJavaScriptインターフェイス
- 19. Android用ゲームon javascript
- 20. iphone、ipad、android javascript print()
- 21. AndroidスタジオでJavaScriptアプリケーションを開発
- 22. javascript/angularでAndroidアプリケーションを構築する
- 23. Androidで動作するJavascriptコード
- 24. JavascriptがWebViewで動作しない - Android
- 25. AndroidでMapQuest javascript sdkを使用する
- 26. JavascriptがWebViewで動作しない - Android
- 27. Android WebView JavaScriptトリガーでファイルをダウンロードする
- 28. Android Monkeyrunner API from Web Interface(Javascript)
- 29. AndroidエスケープJavaScript文字列
- 30. HTML5オーディオボリュームin Javascript(Android 2.3)
AndroidブラウザのWebエンジンでJavaScriptを実行できます。したがって、埋め込まれたJSまたは他の参照ファイルを使用してHTMLファイルを作成して使用します。 –
これはJavaスクリプトではありません。それはjavascriptであり、Javaとは何の関係もない言語です(実際には、C++はjavascriptよりもJavaに密接に関連しています)。 – slebetman