Android NDKツールチェーンを使用してバイナリをコンパイルし、デバイスにデプロイしようとしています。JNIを使用してNDKで構築されたアプリケーションは、ネイティブコードを介してこのバイナリを実行します。私はデバイスをroot化することを避けたいと思っています。
バイナリは複数のアプリケーションで使用されるため、アプリケーションごとに1回ではなく、共有の場所に保存したいと思います。
このバイナリをデプロイする適切な場所が見つかりません-これらは私が試した場所です:
/ mnt / sdcard - SDKのgetExternalStoragePublicDirectory()を使用しますが、SDカードはnoexecとしてマウントされているため、実行できません。
/ system / bin-読み取り専用のファイルシステムであるため、コピーできません。以下を使用してエミュレータに/systemを再マウントすると、adbpushを使用してファイルをプッシュできます。
mount -o rw,remount -t yaffs2 /dev/block/mtd3 /system
ただし、デバイスをルート化する必要があるため、これは避けたいと思います。
/ data / local -adb pushを使用して、バイナリをこの場所にプッシュできます。ただし、コードでこれを行う方法を見つけることができないようです(Android SDKを使用)。内部ストレージメカニズムは/data/ data/packageを指します。
NDKツールチェーンに付属のarm-linux-androideabi-g++を使用して、この実行可能ファイルを呼び出すネイティブコードをコンパイルしました。これは、 / system/binおよび/data/localのバイナリで機能します。
要約すると、Androidファイルシステム内で、プロジェクトの/assetsフォルダーからファイルをコピーできる場所を探しています。この場所で世界的に実行可能なアクセス許可が可能です。