ルート化された Android タブレットを試しています。NDK を使用して、または使用せずに、ネイティブ アプリとして実行できる C/C++ でいくつかのシステム アプリケーションを実行する必要があります。これは、toolbox などの既存のコマンド ライン アプリケーションと同様に、ネイティブの ARM Linux 実行可能ファイルとして機能します。その可能性はありますか?
4 に答える
Yes, you can. And you can do it using the NDK which you make things easier to you , cross-compiling to all platforms supported by Android (ARM variants and x86). You just need to do like you would do to create a shared library for native Java methods. Just make sure you change the makefile to use BUILD_EXECUTABLE
instead of BUILD_SHARED_LIBRARY
to create an executable. Of course you won't need the APK folder structure, just the "jni" folder.
Tutorial
Create the project folders:
mkdir project_folder
cd project_folder/jni
NDK_PROJECT_PATH=<path to>/project_folder
Create the Android.mk makefile in the jni
folder
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := teste
LOCAL_SRC_FILES := teste.c
include $(BUILD_EXECUTABLE)
Create also your source code in the jni
. In this case, you can see from above makefile, it is teste.c
:
#include <stdio.h>
int main (){
puts("Hello World");
return 0;
}
Now go up to your project folder and run ndk-build from there:
# ~/Downloads/android-ndk-r8b/ndk-build
Compile thumb : teste <= teste.c
Executable : teste
Install : teste => libs/armeabi/teste
Although it is output to a lib folder it is a executable, as you can inspect with file
#file libs/armeabi/teste
libs/armeabi/teste: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
はい、可能です。NDK をダウンロードすると、一連のツール (コンパイラ、リンカーなど)、ヘッダー、およびライブラリが得られます。他のクロス コンパイル環境と大きな違いはありません。
NDKには、クロスコンパイラと、ネイティブAndroidバイナリとして実行するための単純なC / C ++アプリケーションを移植するための十分な独立したプログラミング環境(インクルードとライブラリ)が付属しています。ドキュメントについては、NDKのdocs/STANDALONE-TOOLCHAIN.htmlファイルを確認してください。( kandroid.comからオンラインで入手できます。)
NDK は、完全なアプリを作成するのに十分なシステム サービスにアクセスできないと思います。アプリのスキャフォールディングを Java で作成する必要がありますが、Java が呼び出すネイティブ ライブラリを多数作成できます。