1

ルート化された Android タブレットを試しています。NDK を使用して、または使用せずに、ネイティブ アプリとして実行できる C/C++ でいくつかのシステム アプリケーションを実行する必要があります。これは、toolbox などの既存のコマンド ライン アプリケーションと同様に、ネイティブの ARM Linux 実行可能ファイルとして機能します。その可能性はありますか?

4

4 に答える 4

5

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
于 2012-09-14T15:33:01.690 に答える
2

はい、可能です。NDK をダウンロードすると、一連のツール (コンパイラ、リンカーなど)、ヘッダー、およびライブラリが得られます。他のクロス コンパイル環境と大きな違いはありません。

于 2012-09-14T15:13:24.987 に答える
0

NDKには、クロスコンパイラと、ネイティブAndroidバイナリとして実行するための単純なC / C ++アプリケーションを移植するための十分な独立したプログラミング環境(インクルードとライブラリ)が付属しています。ドキュメントについては、NDKのdocs/STANDALONE-TOOLCHAIN.htmlファイルを確認してください。( kandroid.comからオンラインで入手できます。)

于 2012-09-14T15:50:20.313 に答える
0

NDK は、完全なアプリを作成するのに十分なシステム サービスにアクセスできないと思います。アプリのスキャフォールディングを Java で作成する必要がありますが、Java が呼び出すネイティブ ライブラリを多数作成できます。

于 2012-09-14T16:02:40.767 に答える