androidstudio 2.3.3 jni過程匯總(1):1、自己編寫c檔案並使用(原)

來源:互聯網
上載者:User

標籤: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檔案並使用(原)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.