問題タブ [android-ndk-r7]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android での C++ クラッシュから Java コードを呼び出す
PS: 実際、これは機能しています。この質問をすぐに更新するという別の問題があります。
次のネイティブコードがあります。
そして、Java クラスのそれぞれのメソッド
しかし、実行すると次のことが起こります。
メソッドが見つかりましたが、それを呼び出すとクラッシュします (どのメソッドでも起こります)。どうすれば修正できますか? なぜ機能しないのかわかりません。
PS: Android NDK5 & NDK7B でも同じエラーが発生します
android - ndk-gdb:「シンボルテーブルがロードされていません」
私はまだndk-gdbを使用しており、自分で答えたxDの他の質問をするように導いた主な問題を解決しようとしています。
ndk-gdbは、現在のライブラリにシンボルテーブルがないことを通知します。これは、エミュレータが実行しているファイルと同じではない、デバッグしているファイルのようなものです。しかし、私はアプリを再アップロードしました。「ファイルコマンドを使う」とも書いてありますが、ファイルはローカルプログラムをデバッグしているときだけですよね?Androidのようにリモートでデバッグする場合には適していません。
だから私は何をすべきですか?私は3日から解決策を探していますが、それでも無知です。間違ったファイルの問題は別として、このメッセージの他の原因は何ですか?
ありがとう。いくつかの情報:プロジェクトの親ディレクトリで呼び出されたndk-buildとndk-gdb。android apiレベル10(2.3.3)android ndk r7b
Android.mkファイルの内容:
android - ndk プログラムのコンパイル中にエラーが発生しました-権限が拒否されました
cygwin で ndk プログラムをコンパイルしているときに、このエラーが発生します。arm-linux-androideabi-ld.exe ファイルが実行されない理由がわかりません。
助けて。cygwin のエラーなのか、コードの問題なのか知りたいのですが?
android - NDK r7b を使用する Android 用の FrameBuffer / ColorBuffer / DepthBuffer を備えた OpenGLES 1.1
NDK のドキュメントと OpenGLES に関する私のすべての本を読んだ後、壁にぶつかりました。iOS OpenGLES の設定を Android NDK R7 以降にコピーしようとしています。これは主に、コーディング時に見落としていた深度バッファーを取得するためです。
問題は、以下に示すようにカラー バッファを有効にすると一部のオブジェクトのテクスチャが失われ、オブジェクトをバックグラウンドに送信すると深度バッファが機能しないことです。
OGLES 1.1 FFP および NDK R7 以降を使用しています
これが私の初期化コードです:-
これが私のレンダリングコードです:
android - Android NDKのx86ツールチェーンを使用してコンパイル中にstdout、stderrへの未定義の参照エラーを取得する
AndroidNDKツールチェーンを使用してネイティブライブラリlibdigcertの1つをコンパイルしようとしています。
armツールチェーンを使用すると、すべてが正常に機能し、このライブラリを実行可能ファイルにリンクしても、リンカーエラーは発生しません。
x86ツールチェーンを使用すると、stdout、stderrなどへの未定義の参照を示すリンカーエラーが発生します。
nmを使用して両方の.aファイル(armとx86)の違いを読み取りましたが、x86ファイルにはstdoutが定義されていませんが、arm.aにはstdoutシンボルについても言及されていません。
誰かが私がここで欠けているものを私に指摘できますか?
android - NativeActivityレジュームでOpenGLES2ウィンドウを再初期化する
解決しました!以下の更新を参照してください。
大規模なC++アプリケーションをAndroidに移植しており、アプリケーションの一時停止と再開に関しては、すべて正常に実行されています。APP_CMD_INIT_WINDOWコマンドをリッスンし、それが発生したら、すべてのeglコマンドを再初期化して、サーフェス、コンテキスト、および表示を取得します。この後、画面は黒くなります。ただし、正常に機能した後にglClearColorを設定すると、少なくともウィンドウがあり、そこに描画できることを意味します。これにより、再初期化されていない何かが他にある可能性があると私たちは信じるようになります。
私の質問は、再開後(または一時停止前)にクリアして再ロードする必要のあるバッファー、シェーダープログラム、またはその他のキャッシュされたものがあるかどうか、およびこれをテストする適切な方法があるかどうかです。アプリケーションが古いEGLコンテキストを使用して古いバッファを参照していることに関係しているのではないかと思われますが、知る方法はありません。アプリケーションは、多くのテクスチャとオフスクリーンバッファを使用します。
更新:いつものように、さまざまなことを1週間試した後、投稿を作成した直後にようやく解決しました。解決策は次のとおりです。
キャッシュされたすべてのテクスチャ、バッファ、およびシェーダは、EGLによって作成されたコンテキストハンドルに接続されます。GLコンテキストを作成するために初期化されるものがいくつかあり、ウィンドウサーフェスもその1つです。これは、アプリケーションを一時停止および再開するときに破棄および再作成されるANativeWindowオブジェクトに依存する唯一のものです。したがって、これを再作成する必要があるのはこれだけです。
要するに:
再開後、新しいウィンドウオブジェクトを引数として、eglCreateWindowSurfaceを再度実行します。
android - Android の NDK を使用した openSSL の問題
次のような状況があります。AES 暗号化に OpenSSL を使用してアプリの一部を移植しています。すべてをコンパイルしましたが、リンカーが失敗します。状況は次のとおりです。 1.単純に次のことを行う JNI ラッパーを作成しました。
次に、jstring を char * に変換し、その他すべての必要な変換を行う適切な JNI シンタックスを持つ c++ ファイルを呼び出し、実際に openssl ヘッダー (存在し、説明されている) をインポートし、openssl メソッドを呼び出す別の cpp ファイルを呼び出します。暗号化と解読用。
したがって、ndk-build を呼び出すと、すべてのサムがビルドされるため、コンパイラはそれらを正しくコンパイルします。次に、Android用にopensslを移植する必要があり、このOpenSSL for Android を使用しました。これは、単純なndk-build(もちろんプロジェクトのルートにあります)でcharのように機能し、libssl.soとlibcrypto.soをビルドします
だから私は2つを接続する必要があります..ビルドスクリプトを接続するのは難しいと思います.1つのndk-buildがすべてをコンパイルしてリンクします(時間があれば簡単なサンプルプロジェクトをいただければ幸いです)
そのため、コンパイル済みの libssl および libcrypto .so ファイルを jni/includes/prebuilt にコピーし、それらをプロジェクトに含めて、リンカーが最後に使用する lib を最終的に作成できるようにします。
次の Android.mk ファイルがあります
そして ndk-build を呼び出すと、がっかりします
パスが完全に間違っているとすでに推測できるので、混乱しているのは、 ${LOCAL_PATH} がインクルードの最初のバッチに対して正しいパスを返し、.so ファイルに対して完全に間違ったパスを返すことです...どんな助けも本当に感謝しています!
android - インポートされたメイクファイルを変更しても、android-ndk でリビルドがトリガーされない
でコンパイルしたい Android JNI プロジェクトがありますndk-build
。プロジェクトには、複数のサードパーティのサブ プロジェクトが含まれています。
Android.mk
現在のアイデアは、次のように、すべてのサブ プロジェクトのメイクファイルをインクルード/インポートすることです。
other-proj
スタティックライブラリとしてビルドされます。my-proj.mk
に依存し、共有ライブラリother-proj
として構築されます。
このプロジェクトのビルドは機能します。ただし、またはのいずれmy-proj.mk
かを変更してもother-proj.mk
、それぞれのプロジェクトの再構築はトリガーされません。これを行う方法はありますか?
依存関係としてメイクファイルをリストすることはAndroid.mk
できましたが、方法がわかりませんでした。(それらを下にリストしてLOCAL_SRC_FILES
も機能しません。)
$(call import-module,foo/bar)
私はまた、私が望むことを正確に行うように見えるものについても読みました。ただし、この場合、makefile をプロジェクト ディレクトリに隣接jni/makefiles/other-proj/Android.mk
するディレクトリ (例: ) に配置する必要がありましたが、LOCAL_SRC_FILES
. 絶対パスやパス内に a を指定することを好まないようです..
。(メイクファイルはサードパーティ プロジェクトであるため、サブ プロジェクト ディレクトリに直接配置することはできません。)
android - android_app->activity->internalDataPath は 2.3.8 NDK r8 でも NULL のままです
これをテストした場所の仕様を示すために、HTC Desire S、Android 2.3.5、および ndk-r8.
ndk-r7b と ndk-r8 で、android_app->activity->internalDataPath または externalDataPath を使用してローカルの読み書きディレクトリにアクセスする際に、どちらも NULL であるため、問題が発生しています。これは以前のバージョンで投稿されており、この投稿によると、更新によりこれが修正される予定でした:-
NativeActivity を使用して内部ストレージ ファイル システムに書き込むにはどうすればよいですか?
おそらくこれは Ice Cream Sandwich で修正されるかもしれませんが、私のツール チェーンは後方互換性を完全にサポートして更新しない人を捕まえるので、理想からは程遠いものです。私の質問は、既知の修正があるか、修正されるまで「/data/data/com.example.mytest/files/somefile.dat」のようなディレクトリ構造を手動で追加する必要がありますか?
android - adb shell ping ホストが機能しない
今、Androidデバイスがネット経由で別のデバイスに接続できるかどうかを確認したい. ブラウザを使用してインターネットにログインできます。しかしadb shell
、Androidエミュレーターping
に接続し、コマンドを使用してホストに接続すると、失敗します。
(192.168.145.136 はホストの IP です!)
しかし、127.0.0.1 に ping を実行すると、機能します。したがって、デバイスが ping コマンドをサポートしていることは間違いありません。ブラウザでインターネットにログインできるのに、ホストにpingできない理由がわかりません。さらに、誰でもAndroidでネットワーク機能を確認する他の方法を示すことができますか?
ありがとう