Android NDKを使用してコンソールアプリケーションを作成する

こんにちは 私は、AndroidがLinuxであるかどうか、およびAndroidで端末(コンソール)アプリケーションを実行して、Dalvikと呼ばれるサンドボックスをバイパスできるかどうかという質問に長い間興味を持っています。



これを行うために、Android NDKを使用してAndroid用のC / C ++アプリケーションを作成する方法を習得しました。 NDKを使用すると、Java用のネイティブメソッド(C / C ++)とコマンドラインから実行する実行可能アプリケーションの両方のライブラリを作成できます。



ここでは、最初のステップを迅速かつ簡単に行う方法を説明します。 Windows用のAndroid NDKが不便であるため、事前に予約するため、OSXとLinuxについてさらに説明します。 Ubuntu仮想マシンが助けになります!



書かれたものは、すでに次の手順を試した人向けです。



1. C / C ++でHello Worldを作成しました。

2. ADB、SDKをインストールして試しました。

3. Androidスマートフォンでデバッグモードをオンにしました( デバッグモード )。



次のステップは、NDKをマシンに配置し、環境変数を設定することです。 不具合があるため、ndkの最新バージョンをインストールしないことをお勧めします。 私はndk-r10dを自分で置きました。 こちらの手順をお読みください: UbuntuおよびSDK | NDK入門ガイド | ツール、ADB、SDK、NDK for Mac



次に、2つの整数の単純なコンソール加算器の作成を検討します。 simpleAppディレクトリを作成し、その中にjniサブディレクトリを配置します。 jniでは、simpleApp.cアプリケーションのソースコードを使用して、次の内容のファイルを作成する必要があります。



#include <stdio.h> int main() { int a,b; printf("Enter two numbers a and b: "); scanf("%d %d", &a, &b); printf("a+b = %d\n", a+b); return 0; }
      
      





次に、同じディレクトリで、Android.mkのコンパイル設定を使用してファイルを作成する必要があります。 このファイルの詳細な説明は、Android.mkドックで入手できますが、コンパイルに必要な最小限のコンテンツのみを提供します。



 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := simpleApp LOCAL_SRC_FILES := simpleApp.c #   APP_ABI := armeabi #  ARM (   ) TARGET_ARCH_ABI := armeabi include $(BUILD_EXECUTABLE) #  -   
      
      





simppleApp.cとAndroid.mkを準備した後、ターミナルからsimpleAppディレクトリに入り、ndk-buildコマンドを実行します。



 $ cd simpleApp/ simpleApp$ ndk-build [armeabi] Compile thumb : simpleApp <= simpleApp.c [armeabi] Executable : simpleApp [armeabi] Install : simpleApp => libs/armeabi/simpleApp
      
      





/ libs /フォルダーがsimpleAppディレクトリに表示されます。 異なるプラットフォーム用の実行可能ファイルを含むサブディレクトリが表示されます。 たとえば、armeabiディレクトリ(多くの一般的なデバイスに適しています)からarmプラットフォームのファイルを取得し、adbとpushコマンドを使用して/ data / local / tmpディレクトリの実際の電話にコピーします。



 simpleApp$ cd libs/armeabi/ armeabi$ adb push simpleApp /data/local/tmp [100%] /data/local/tmp/simpleApp
      
      





次に、ターミナルからデバイスに移動し、simpleAppアプリケーションのあるディレクトリに移動して実行します。



 armeabi$ adb shell shell@m3:/ $ cd /data/local/tmp shell@m3:/data/local/tmp $ ./simpleApp Enter two numbers a and b: 6 3 a+b = 9
      
      





いいね! コンソールアプリケーションは動作を開始し、数字の入力を要求し、正しい結果を出しました! 私のメモがAndroid NDKツールをマスターする最初のステップで誰かを助けることを願っています。



All Articles