問題タブ [native-activity]

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 に答える
422 参照

android - Android Native Activity で (un)blankDisplay の長さを決定するものは何ですか?

現在、Logcat で次の出力を取得しています。

画面をオンにする際の unblankDisplay() での過度の遅延: 237ms

これにより、OS がウィンドウを破壊して再作成しようとしているように見えますが、フレーム時間はそれほど長くないようです。ディスプレイの空白を適切に解除したことを示すためにトリガーする必要があるものは他にありますか?

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

android - Javaオブジェクトが初期化されるまでnativeactivity呼び出しを延期する方法は?

Java でいくつかの変数を初期化し、それらをネイティブ コードに送信しようとしています。Java 変数が初期化される時間を取得してから、ネイティブ アクティビティに渡すことができるように、nativeactivity 呼び出しを遅らせる必要があります。

私の主な問題は、NativeActivity (必須) からクラスを拡張したため、アクティビティが開始されるとすぐにネイティブ アクティビティが呼び出され続けることです。スーパーの後に onCreate() が呼び出されるとすぐに、ネイティブ アクティビティが自動的に開始され、Java 変数はまだ初期化されていません。

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

android - java.lang.IllegalArgumentException: ネイティブ ライブラリを読み込めません

私は自分のプロジェクト (Native Activity) で純粋にネイティブな NDK を使用しています。Android.mk ファイルに .so を使用してビルド済みの静的ライブラリを追加すると、正常に動作します。しかし、ビルド済みの共有ライブラリをリンクしようとすると、以下の例外が表示されます:

ここに私の Android.mk ファイルがあります:

と私の AndroidManifest.xml で:

最後に Application.mk で:

また、最後の行を次のように置き換えてみました。

ビルド済みの共有ライブラリをネイティブ ライブラリにリンクするには、他に何をすればよいですか? ここで何が欠けていますか? どんな助けでも大歓迎です。

編集:

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

android - NativeActivity から contentView を削除する

setContentView を使用して設定されたビューを削除する正しい (または任意の) 方法は何ですか? アプリケーションは基本的に、openGL を使用する NativeActivity アプリケーションであり、レイアウト/ビューは定義されていません。非常に早い段階でスプラッシュ スクリーンを追加する必要があったため、Java から SurfaceView から派生したクラスを作成して、リソース イメージを表示しました。これはすべて正常に動作し、SurfaceView を使用して設定します

問題は、このビューを削除して openGl アプリケーションを表示できないように見えることです。音声が聞こえ、実行されているように見えますが、このスプラッシュ スクリーンが一番上にあります。setContnetView(null) を使用して可視性を設定しようとしましたが、代わりに基本的な空白のテキストビューを設定しましたが、何も機能していないようです。

どんなアイデアでも素晴らしいでしょう。

ありがとう

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

android - Android NDK NativeActivity メモリ管理が必要ですか?

Android 用のゲームNativeActivtyをプログラムするために、native_app_glue を使用しています。OpenGLヒープに割り当てられたオブジェクトと によって割り当てられたオブジェクトを削除する最適な時期を判断するのは困難ですOpenGL

NDK のNativeActivityサンプルでは、​​オブジェクトの処理が完了した後にオブジェクトを削除していないようです。現在、2 つの削除機能を使用してオブジェクトを削除しています。1 つはOpenGLオブジェクト用で、もう 1 つは通常の機能です。OpenGLイベント処理スレッドだけがオブジェクトを削除できるように見えるので、それらを分割しました。私が割り当てた通常のオブジェクトは、通常の削除機能によって削除されます。

ユーザーが戻るボタンを押してアプリに戻ると、OpenGLリソースが削除され、アプリがクラッシュします (ただし、リソースを再割り当てする必要があると思いますAPP_CMD_INIT_WINDOW)。これにより、オブジェクトを削除する必要がないように見えるため、オブジェクトを削除する必要があるかどうか疑問に思いOpenGLます。

NDK でヒープに割り当てられたオブジェクトを削除することになっていますか。NDK アプリはまだサンドボックス化されており、プロセスがあることは理解していますがJVM、これによりメモリ管理が必要になりますか?

編集: 私のアプリケーションのクラッシュの別のインスタンスは、ゲームの状態が終了したときにオブジェクトが削除されたときです。たとえば、実際のゲームからメニューに移動します。ゲームに戻ると、オブジェクトが再割り当てされているにもかかわらず、アプリケーションがクラッシュします。1回だけ効果があるようです。

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

android - C/C++ から Binder を使用して IPC を実装する

完全に C で記述された Android アプリを持っています。IPC をネイティブに実装できるようにしたいと考えています。つまり、可能であれば JNI 経由で Java に戻らないでください。

Binder API は NDK API の一部ではないため、C コードから直接使用するのではなく、JNI を使用する Java API に依存するべきであると読みました。サポートされていないため、API は変更される可能性があり、おそらく過去数バージョンにわたって変更されている可能性があります。

私の質問は - C/C++ から Binder を直接使用できますか? また、そうすることでセキュリティ上の問題が発生しますか?

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

android - ディレクトリ(フォルダー)がapkに存在するかどうかをネイティブコードのみで確認する

apk に特定のディレクトリが存在するかどうかを確認する必要があります。

android/asset_manager.hAPI に一貫性がないようです - ファイルを開くことができない場合は NULL を返しますがAAsset* AAssetManager_open(AAssetManager* mgr, const char* filename, int mode);、ディレクトリAAssetDir* AAssetManager_openDir(AAssetManager* mgr, const char* dirName);の実装では、new AAssetDir(...)内部的に apk でディレクトリを開く/見つけることができなかったとしても、常に a を返します。

AAssetDir前方宣言され、その実装が .cpp ファイルに隠されていることは非常に腹立たしいことです。そうでなければ、内部AssetDirオブジェクトの有効性をチェックすることは (おそらく?) 可能でした。

私が現在検討している別のオプションがあります-Javaを呼び出して次のようなことをします:

しかし、それは私には「汚い」ように見え、間違いなくかなり遅くなります (これは私の特定のコードでは大きな要因ではありませんが、それでも - 不必要な悲観化を避けることは良いコーディング方法です)。

私は何かを逃しましたか?ディレクトリがapkに存在するかどうかをネイティブコードのみで確認することはできますか? そうでない場合-jniでそれを行うにはどうすればよいですか?