問題タブ [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.

0 投票する
1 に答える
223 参照

android - Android での C++ クラッシュから Java コードを呼び出す

PS: 実際、これは機能しています。この質問をすぐに更新するという別の問題があります。

次のネイティブコードがあります。

そして、Java クラスのそれぞれのメソッド

しかし、実行すると次のことが起こります。

メソッドが見つかりましたが、それを呼び出すとクラッシュします (どのメソッドでも起こります)。どうすれば修正できますか? なぜ機能しないのかわかりません。

PS: Android NDK5 & NDK7B でも同じエラーが発生します

0 投票する
4 に答える
6668 参照

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ファイルの内容:

0 投票する
2 に答える
5187 参照

android - ndk プログラムのコンパイル中にエラーが発生しました-権限が拒否されました

cygwin で ndk プログラムをコンパイルしているときに、このエラーが発生します。arm-linux-androideabi-ld.exe ファイルが実行されない理由がわかりません。

助けて。cygwin のエラーなのか、コードの問題なのか知りたいのですが?

0 投票する
1 に答える
3642 参照

android - NDK r7b を使用する Android 用の FrameBuffer / ColorBuffer / DepthBuffer を備えた OpenGLES 1.1

NDK のドキュメントと OpenGLES に関する私のすべての本を読んだ後、壁にぶつかりました。iOS OpenGLES の設定を Android NDK R7 以降にコピーしようとしています。これは主に、コーディング時に見落としていた深度バッファーを取得するためです。

問題は、以下に示すようにカラー バッファを有効にすると一部のオブジェクトのテクスチャが失われ、オブジェクトをバックグラウンドに送信すると深度バッファが機能しないことです。

OGLES 1.1 FFP および NDK R7 以降を使用しています

これが私の初期化コードです:-

これが私のレンダリングコードです:

0 投票する
0 に答える
2155 参照

android - Android NDKのx86ツールチェーンを使用してコンパイル中にstdout、stderrへの未定義の参照エラーを取得する

AndroidNDKツールチェーンを使用してネイティブライブラリlibdigcertの1つをコンパイルしようとしています。

armツールチェーンを使用すると、すべてが正常に機能し、このライブラリを実行可能ファイルにリンクしても、リンカーエラーは発生しません。

x86ツールチェーンを使用すると、stdout、stderrなどへの未定義の参照を示すリンカーエラーが発生します。

nmを使用して両方の.aファイル(armとx86)の違いを読み取りましたが、x86ファイルにはstdoutが定義されていませんが、arm.aにはstdoutシンボルについても言及されていません。

誰かが私がここで欠けているものを私に指摘できますか?

0 投票する
2 に答える
2120 参照

android - NativeActivityレジュームでOpenGLES2ウィンドウを再初期化する

解決しました!以下の更新を参照してください。

大規模なC++アプリケーションをAndroidに移植しており、アプリケーションの一時停止と再開に関しては、すべて正常に実行されています。APP_CMD_INIT_WINDOWコマンドをリッスンし、それが発生したら、すべてのeglコマンドを再初期化して、サーフェス、コンテキスト、および表示を取得します。この後、画面は黒くなります。ただし、正常に機能した後にglClearColorを設定すると、少なくともウィンドウがあり、そこに描画できることを意味します。これにより、再初期化されていない何かが他にある可能性があると私たちは信じるようになります。

私の質問は、再開後(または一時停止前)にクリアして再ロードする必要のあるバッファー、シェーダープログラム、またはその他のキャッシュされたものがあるかどうか、およびこれをテストする適切な方法があるかどうかです。アプリケーションが古いEGLコンテキストを使用して古いバッファを参照していることに関係しているのではないかと思われますが、知る方法はありません。アプリケーションは、多くのテクスチャとオフスクリーンバッファを使用します。


更新:いつものように、さまざまなことを1週間試した後、投稿を作成した直後にようやく解決しました。解決策は次のとおりです。

キャッシュされたすべてのテクスチャ、バッファ、およびシェーダは、EGLによって作成されたコンテキストハンドルに接続されます。GLコンテキストを作成するために初期化されるものがいくつかあり、ウィンドウサーフェスもその1つです。これは、アプリケーションを一時停止および再開するときに破棄および再作成されるANativeWindowオブジェクトに依存する唯一のものです。したがって、これを再作成する必要があるのはこれだけです。

要するに:

再開後、新しいウィンドウオブジェクトを引数として、eglCreateWindowSurfaceを再度実行します。

0 投票する
2 に答える
9337 参照

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 ファイルに対して完全に間違ったパスを返すことです...どんな助けも本当に感謝しています!

0 投票する
2 に答える
1348 参照

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 を指定することを好まないようです..。(メイクファイルはサードパーティ プロジェクトであるため、サブ プロジェクト ディレクトリに直接配置することはできません。)

0 投票する
1 に答える
1782 参照

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」のようなディレクトリ構造を手動で追加する必要がありますか?

0 投票する
2 に答える
18301 参照

android - adb shell ping ホストが機能しない

今、Androidデバイスがネット経由で別のデバイスに接続できるかどうかを確認したい. ブラウザを使用してインターネットにログインできます。しかしadb shell、Androidエミュレーターpingに接続し、コマンドを使用してホストに接続すると、失敗します。

(192.168.145.136 はホストの IP です!)

しかし、127.0.0.1 に ping を実行すると、機能します。したがって、デバイスが ping コマンドをサポートしていることは間違いありません。ブラウザでインターネットにログインできるのに、ホストにpingできない理由がわかりません。さらに、誰でもAndroidでネットワーク機能を確認する他の方法を示すことができますか?

ありがとう