標籤:extends bmp debug nal 添加 檔案夾 shared super 動態
1、編寫java代碼,指定lib和native方法。
package com.taven.myapplication;
package com.taven.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("jni-lib-1");
}
private native void sayHelloJni();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main);
}
}
2、建立jni檔案夾,在jni檔案夾中建立Android.mk檔案
其中mk檔案內容如下:
#指定編譯的檔案夾 指定當前檔案目錄
LOCAL_PATH := $(call my-dir)
#編譯器會定義很多的臨時變數,中間變數,最好清空所有的中間變數。
include $(CLEAR_VARS)
#編譯器編譯出來的模組名稱
LOCAL_MODULE:= jni-lib-1
#編譯器編譯出來的原始碼的名稱
LOCAL_SRC_FILES:= jni-lib-1.c
#編譯一個動態庫,靜態庫
#靜態庫 檔案名稱.a 包含所有的函數並且函數啟動並執行依賴,體積大,包含所有的API
#動態庫 檔案名稱.so 包含函數,不包含函數啟動並執行依賴,體積小,啟動並執行時候,去作業系統尋找需要的API
include $(BUILD_SHARED_LIBRARY)
3、在app的build.gradle下添加mk檔案路徑
externalNativeBuild {
ndkBuild {
path file("src\\main\\jni\\Android.mk")
}
}
4、可以添加排除選項,指定產生指定平台so檔案。
在app->build.gradle檔案中的android節點下的defaultConfig中添加代碼如下:
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
5、重建一下項目(Rebuild),當滑鼠置於native方法上時,就會出現產生jni代碼提示。按下Alt+Enter,自動產生jni檔案。
6、填寫c代碼
7、再次編譯項目,產生的so庫目錄在app/build/intermedieates/ndkBuild/debug/obj/local/目錄下;
8、運行即可。
androidstudio 2.3.3 jni過程匯總(1):1、自己編寫c檔案並使用(原)