AndroidStudio下NDK開發流程

以前做過eclipse下的NDK的開發,隨著google推出了android studio,現在android開發越來越遺棄eclipse,所以就想對android studio下NDK開發有所了解。
NdkDemo是一個簡單的通過native調用C返回一串字符的demo,主要是想通過這個小demo了解AS下的NDK開發(實踐中檢驗可行性)。

1.配置NDK環境、新建項目

(1). 通過Android studio在線安裝最新的NDK環境,路徑File -> Settings -> Appearance&Behavior -> System Settings -> Android SDK。選擇SDK Tools安裝最新的NDK
NDK安裝

(2).新建一個app項目
app項目

(3).配置NDK,File -> Project Struct -> SDK Location
配置NDK路徑

2.編寫native方法

新建一個JniDemo類,編寫一個native方法。

public class JNIDemo {

    public native static String  getStringFromNative();



}

3.生成.h文件

(1).點擊view ->ToolsWindows->Terminal打開命令行,輸入 “cd app\src\main”,進入src\main\目錄下。
(2).執行如下命令

生成.h文件

javah是生成頭文件需要的工具,
-d jni 在工程下生成jni目錄,到時會在這個目錄下建JNI開始的C/C++源文件的。
-classpath E:\Android\SDK\platforms\android-23\android.jar 這個就是你SDK文件下android.jar所在的文件位置,找到后復制即可。
....\build\intermediates\classes\debug 是編譯后class路徑
com.andryyu.ndk.jni.JNIDemo是JNIDemo.class路徑
(3).刷新項目工程,會自動生成一個jni目錄,在jni目錄里面包含著一個.h頭文件。
jni目錄

4.實現C代碼

在jni目錄下,生成一個.c文件,然后編寫native方法的實現內容。(此處不贅述jni相關的語法)
實現C代碼

5.設置相關配置

(1).在app module下的build.gradle配置如下信息
配置庫名和體系

(2).在JniDemo.java調用so庫

public class JNIDemo {

    public native static String  getStringFromNative();

    static {
        System.loadLibrary("jniDemo");   //defaultConfig.ndk.moduleName
    }
}

(3).在MainActivity中調用native方法

public class MainActivity extends AppCompatActivity {

    private TextView tvInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvInfo = (TextView) findViewById(R.id.tv_info);
        String text = JNIDemo.getStringFromNative();
        tvInfo.setText(text);
    }
}

6.編譯

點擊Build -> Make Project編譯項目工程。然后會在build -> intermediates -> ndk -> debug目錄下,會生成相應地so庫和Android.mk
編譯后

7.運行

使用genymotion虛擬機運行


運行結果

注意:

調試過程需要到 Error:(115) *** Android NDK: Aborting . Stop. 錯誤,后來借鑒關于android studio ndk Error:(115) *** Android NDK: Aborting . Stop.錯誤,將SDK由android-25改為android-26就好了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,536評論 25 708
  • 一、NDK產生的背景 Android平臺從誕生起,就已經支持C、C++開發。眾所周知,Android的SDK基于J...
    Ten_Minutes閱讀 3,555評論 1 27
  • 個人博客地址 http://dandanlove.com/ 記得前年開始自己在項目中使用第三方so庫的時候就接觸N...
    靜默加載閱讀 669評論 1 5
  • 前段時間由于做比賽的事,一直都沒時間寫博客,現在終于可以補上一篇了,一直想學習一點NDK開發的知識,但是遲遲沒有動...
    冰鑒IT閱讀 1,809評論 7 18
  • 看微博翻到對雙魚男的形容—暖渣。。。。。。。。玻璃心的我表示受到了1000000000點暴擊傷害
    a0613515b241閱讀 163評論 0 1