Android Studioc創(chuàng)建JNI項目

新建工程:

一定要把這個勾上:


flag.png

在defaultConfig里加入如下代碼:

ndk {
            abiFilters "x86_64", "armeabi-v7a", "x86" //輸出指定三種平臺下的so庫 可以自己決定
        }

另外默認(rèn)的so名稱是:native-lib,也可以修改,修改步驟如下:
1:打開項目中的 app\CMakeLists.txt ,找到:

add_library( # Sets the name of the library.
             native-libs

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             src/main/cpp/native-lib.cpp )

僅僅修改上面代碼中,第一個native-lib以及加載庫時,設(shè)定的類名字符串:

static {
        System.loadLibrary("native-lib");
    }

還有一個地方,下面代碼第一個native-lib:

target_link_libraries( # Specifies the target library.
                       native-libs

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

注意:你要寫的JNI要和自己的工程路徑一樣,即“System.loadLibrary("native-lib");”這個代碼寫在哪個類里,JNICALL的路徑就是哪個,并且在該類里定義原生方法:

public native String stringFromJNI(); 

我的路徑是“com.example.jackieyao.hellojni.MainActivity”所以,jni代碼如下:

extern "C"
JNIEXPORT jstring

JNICALL
Java_com_example_jackieyao_hellojni_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++   dsdsf";
    return env->NewStringUTF(hello.c_str());
}

build后,在“/Users/jackieyao/Downloads/HelloJNI2/app/build/intermediates/cmake”里就會出現(xiàn)多平臺的so文件。
如果運行失敗,嘗試在項目的gradle里的android{...}里加入如下代碼:

sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

在MainActivity里使用如下:

ff.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容