これらはデフォルトでは Android 4.2.1 にインストールされません。そのため、 GNU などのソースをクロスコンパイルしgrep
たりfind
、Android で実行したりすることはできますか? (できれば、デバイスをルートしたり、 PLAYからアプリをインストールしたりする必要はありません。たとえば、busybox です。) これを防ぐ依存関係が不足していませんか? 私はUbuntu 10.0.04で開発しています
2 に答える
grep
私はビルドやを試したことがないので、これは完全な答えではありませんfind
。ただし、一般的に、Android用のGNUユーティリティを構築することはかなり可能です。これを行うための最良のオプションは次のとおりです。
- Androidネイティブ開発キットをダウンロードする
- NDKで参照して、Androidスタンドアロンツールチェーンを構築します
docs/STANDALONE-TOOLCHAIN.html
./configure && make
通常のメカニズムを使用して、関連するGNUユーティリティを構築するだけです。
次に、結果のバイナリをAndroidデバイスにコピーする必要があります。これは、を使用して実行できますadb push
。多くの場合、実行不可とマークされ/data/
ているため、それらをどこかに配置するように手配する必要があります。/mnt/sdcard
依存関係がありません
実際のビルド中に見つかる主な問題は、Androidが標準のGNU libc
(glibc)を使用していないことです。代わりに、Bionicと呼ばれる独自のものを使用します。これは、特定の重要なAPI(たとえば、ワイド文字列のサポート)を見逃します。
一部のGNUユーティリティでは、これで問題がなく、最小限のソースコード変更でコンパイルできることがわかりました。
ただし、問題が発生した場合は、これらのユーティリティの他のバージョンを使用することをお勧めします。これらのユーティリティは、通常、基になるlibcに関してより柔軟性を持たせるように設計されています。具体的には、使用に関する以前のアドバイスbusybox
は優れています。Androidマーケットからインストールしたくない場合は、ここでソースコードを見つけることができます。
変。私はそれらを持っています/system/xbin/*
。たぶん、ビジーボックスでもっと運がいいでしょう。busybox find
busybox grep
Android 4.2 に busybox がデフォルトでインストールされているかどうかはわかりませんが、かなり一般的なバイナリです。