Eclipse創(chuàng)建NDK的步驟

1 創(chuàng)建項(xiàng)目

依次選擇路徑 File-> New -> Other -> Android -> Android Application Project

選擇路徑

點(diǎn)擊"Next",填寫基本的項(xiàng)目信息

配置項(xiàng)目基礎(chǔ)信息

若是其它數(shù)據(jù)不需要修改的,一直Next到底,最后點(diǎn)擊Finish,此時(shí)項(xiàng)目創(chuàng)建成功!

項(xiàng)目結(jié)構(gòu)

2 運(yùn)行項(xiàng)目

右擊項(xiàng)目,選擇Run As -> Android Application,此時(shí)我的項(xiàng)目這里報(bào)錯(cuò)

Failed to load C:\tgcity\android-sdk-windows\build-tools\26.0.0\lib\dx.jar

Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder!

我的解決辦法是在project.properties中添加

sdk.buildtools=25.0.2

此時(shí)項(xiàng)目就可以跑起來了

3 生成.h文件

首先在MainActivity中創(chuàng)建公開方法

public static native String getStringFromJNI();

其次在項(xiàng)目的第一層創(chuàng)建“jni”文件夾

最后執(zhí)行語句

javah -classpath bin/classes -d jni com.example.testjnidemo.MainActivity

此時(shí)該步驟報(bào)錯(cuò)->無法訪問android.app.Activity

具體原因可以參考javah生成報(bào)錯(cuò)

最終輸入的指令為

javah -classpath bin/classes;C:\tgcity\android-sdk-windows\platforms\android-26\android.jar -d jni com.example.testjnidemo.MainActivity

刷新項(xiàng)目即可出現(xiàn)生成的.h文件

生成的h文件

4 配置jni中文件

先看一下jni結(jié)構(gòu)

jni結(jié)構(gòu)

首先是.c文件

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <jni.h>

JNIEXPORT jstring JNICALL Java_com_example_testjnidemo_MainActivity_getStringFromJNI (JNIEnv * env, jclass jclass){

return (*env)->NewStringUTF(env,"message back succeed");

}

接著是Android.mk文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := tgcity #生成的so文件名稱

LOCAL_SRC_FILES := tgcity.c #編譯的文件名稱

include $(BUILD_SHARED_LIBRARY)

最后是Application.mk文件

APP_ABI := all

使用指令進(jìn)行生成so文件

ndk-build

ndk調(diào)用指令

刷新項(xiàng)目即可看到生成的so文件

so生成目錄

5 使用

導(dǎo)入so文件

static{????

????System.loadLibrary("tgcity");

}

...

Log.e(getLocalClassName(), getStringFromJNI());

查看輸出結(jié)果


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

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

  • 一、NDK產(chǎn)生的背景 Android平臺(tái)從誕生起,就已經(jīng)支持C、C++開發(fā)。眾所周知,Android的SDK基于J...
    Ten_Minutes閱讀 3,726評(píng)論 1 27
  • 一、NDK 什么是NDK? 在Android OS上開發(fā)應(yīng)用程序,Google提供了兩種開發(fā)包:SDK和NDK。 ...
    psw123456閱讀 1,057評(píng)論 0 0
  • From:https://www.cnblogs.com/Jeson2016/p/6434425.html htt...
    Tim_Hu閱讀 1,124評(píng)論 0 0
  • JNI,是Java Native Interface的縮寫,中文為Java本地調(diào)用。通俗地說,JNI是一種技術(shù),通...
    HVCKER閱讀 866評(píng)論 1 1
  • 前段時(shí)間由于做比賽的事,一直都沒時(shí)間寫博客,現(xiàn)在終于可以補(bǔ)上一篇了,一直想學(xué)習(xí)一點(diǎn)NDK開發(fā)的知識(shí),但是遲遲沒有動(dòng)...
    冰鑒IT閱讀 1,991評(píng)論 7 18

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