2016-05-25 6 views
0

私はNDKを使用しようとしています。私は公式サンプルを使って作業を始めています。私は「こんにちはJNI」のサンプルの作業を取得するために管理してきました: https://github.com/googlesamples/android-ndk/tree/master/hello-jni初心者のためのNDK:ソースファイルを追加する場所/方法は?

(私はAndroidのメーカーと連携)

をしかし、私はプロジェクトにソースファイルを追加する方法がわかりません。したがって、たとえば、提供JNI関数がある(私はこれのために有用ではないマクロを削除):

jstring Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env, 
                jobject thiz) 
{ 
    return (*env)->NewStringUTF(env, "Hello from JNI !"); 
} 

のは、私のように定義されたC関数「のgetString()」、から文字列を取得したいとしましょう以下:

const char* getString() 
{ 
    return "Hello from getString()"; 
} 

//Then, JNI function becomes 

jstring Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env, 
                jobject thiz) 
{ 
    return (*env)->NewStringUTF(env, getString()); 
} 

私は関数を宣言getString.hを作成し、私の現在、唯一のソース・ファイルで実装を入れた場合は、すべてが魔法のように動作します。したがって、ヘッダーが機能します。

ただし、私が実装を置く場所にGetString.cファイルを作成すると、コードがコンパイルを停止します。 GetString.oはリンクされていない(またはコンパイルされていてもわかりません)ので、理解していますが、Android Studioにhello-jni.c(サンプルのソースファイル)とGetString.c

私の手を汚くして、gradleファイルを変更する必要がありますか? 私はまた、makefileのように動作するAndroid.mkというファイルについて聞いたことがありますが、プロジェクトで見つけられませんでした。それが必須であれば、私はそれを作り、それに何を入れるべきですか?そうでない場合、IDEはhello-jni.cをビルドする必要があることをどのように認識していますか?あなたは、Java側のものかのGradleスクリプトに関するあらゆる情報が必要な場合は、単にgithubのリンク:)

答えて

0

まあ、上を見て

(AKA「私はそれを修正する前にどのようにプロジェクトが設定されますでした」)私が思ったことを確認するのに十分なテストでした。 Android.mkを作成するだけでした:

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_SRC_FILES := hello-jni.c, GetString.cpp 
LOCAL_MODULE := hello-jni 

include $(BUILD_SHARED_LIBRARY) 
関連する問題