參考了https://blog.csdn.net/zi413293813/article/details/50074239 然後自己重新整理補充 我用的ndk-r10d ndk下載地址http://developer.android.com/sdk/ndk/index.html eclipse 開發 ...
參考了https://blog.csdn.net/zi413293813/article/details/50074239 然後自己重新整理補充
我用的ndk-r10d
ndk下載地址http://developer.android.com/sdk/ndk/index.html
eclipse 開發環境
1、用eclipse創建一個android項目
2、選中項目右鍵->Properties->Builders->New->選中Program 點擊OK->各種配置文字太難描述直接上圖
配置了ndk-build 的路徑還有剛剛創建的那個android項目
打勾
Specify Resources 瀏覽找到剛剛創建的android項目就可以了,項目配置就這些
在src目錄先創建一個class文件,內容如下
public class JniClient { static public native String AddStr(String strA, String strB); static public native int AddInt(int a, int b); }
找到JniClient.java(剛剛創建的那個類)所在位置,右鍵打開cmd或者powershell 執行命令javac JniClient.java
在項進入到src磁碟目錄右鍵打開cmd或者powershell 執行命令 javah com.example.mtest.JniClient (這個需要根據自己項目實際路徑而定)
這樣就生成了com_example_mtest_JniClient.h 頭文件內容就不展示了,最前面連接地址裡面有
然後手動創建一個com_example_mtest_JniClient.c 最前面連接地址裡面有 ,編輯器有問題貼不出來
把這個頭文件和源文件剪切到 jni 目錄(項目根目錄下 沒有就自己創建)
在jni目錄裡面添加一個Android.m
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE :=_SRC_FILES := com_example_mtest_JniClient.c include $(BUILD_SHARED_LIBRARY)
以及Application.mk
#使用STL庫 APP_STL := gnustl_static #相容老的語法,使一些錯誤降為警告 APP_CPPFLAGS += -fpermissive #選擇平臺,如果都需要生成用空格隔開 APP_ABI := armeabi armeabi-v7a
刷新項目就會在lib目錄生成對應的 so 文件
下麵寫一下如何使用剛剛生成的so庫
重新新建一個android 項目 我這裡用的是cocos2d-x的一個游戲項目
把生成的so放到新的android項目的jni目錄下
在這個新項目Android.mk裡面添加如下內容
include $(CLEAR_VARS)
LOCAL_MODULE := libTestNdk
LOCAL_SRC_FILES := TestNdk/$(TARGET_ARCH_ABI)/libTestNdk.so
include $(PREBUILT_SHARED_LIBRARY)
LOCAL_STATIC_LIBRARIES += libTestNdk
還不能直接使用,回到第一個創建的android項目 把JniClient.java這個文件打成一個jar包
我是在src目錄下powershell裡面執行jar -cvf mtest.jar com\example\mtest\JniClient.class
生成mtest.jar包 ,不過bin目錄裡面好像有自動生成
把這個jar包放入第二個項目lib裡面,在appactivity裡面添加如下代碼
然後在onCreate()方法裡面調用
在手機上運行項目可以看到如下輸出
.748: I/System.out(5703): ...abelmou...HelloWorld from JNI !
說明調用成功,寫得有點亂方便自己回顧