OK、これは奇妙なものです:
Android NDK を使用せずに Android 用のネイティブ C アプリケーションまたはライブラリを開発する方法はありますか?
NDK がリリースされる前に何が起こっていましたか? (あまり長くはありません。1、2 年前にリリースされたと思います)。
OK、これは奇妙なものです:
Android NDK を使用せずに Android 用のネイティブ C アプリケーションまたはライブラリを開発する方法はありますか?
NDK がリリースされる前に何が起こっていましたか? (あまり長くはありません。1、2 年前にリリースされたと思います)。
私の友人は本当の Android の第一人者で、GCC ベースのネイティブ ツールチェーンを完全に手作業で構築することができました。彼はまた、Android の libc に欠けていたいくつかの部分を修正しました。主なアイデアは次のとおりです。GCC には arm-elf-linux ターゲットのサポートが組み込まれているため、適切なビルド スクリプトを使用して、Android 用にビルドするように構成できます。ただし、結果のバイナリを実行するには、電話をルート化する必要があります。さらに優れた点の 1 つは、GCC はセルフホスティング コンパイラであるため、arm-linux-elf ツールチェーンを使用して、GCC をもう一度再コンパイルし、電話自体にツールチェーンを含めることができることです。
NDK がリリースされる前は、公式にサポートされている Android アプリケーションの開発方法は、Android SDK を使用して Java でアプリケーションを作成することだけでした。
他の人が述べたように、一部のアプリケーションを完全にスタンドアロンとしてクロスコンパイルし、ルート化された電話で実行することが可能です. これのマイナス面は明らかです: あなたのアプリケーションを実行できる人はほとんどいません (彼らも root である必要があり、さらにあなたのアプリケーションを Play ストアにアップすることはできません)。また、さまざまなデバイス間で互換性の問題が発生する可能性もあります。たとえば、さまざまなライブラリに対する動的リンクに依存している場合 (バイナリのサイズを抑えるために必要になる場合があります)。
TL;DR: 可能ですが、制限が厳しく、お勧めしません。
Android互換のツールチェーン(CodeSourceryなど)を使用してCコードをコンパイルし、ルート化されていない電話で、コマンドラインから(たとえば、SSHDroidなどのSSH接続を介して)実行できます。