android NDK開發demo(基於android )
新建Myndkproject工程,然後再新建一個class為MyHelloNDK的類,定義native方法。
public class MyHelloNDK { static { System.loadLibrary("myhellotest"); } public native String getString();//本地方法 }二.配置NDK
如截圖所示,如果沒有配置的話,請先下載ndk,然後如截圖所示配置。
三.生成so庫檔案
1.make project生成MyHelloNDK對應的.class檔案,然後進入.class檔案目錄
2.進入該路徑後,呼叫jni.h命令生成對應的.h檔案在路徑:
app\build\intermediates\classes\debug
利用android studio的terminal進入到debug路徑下,執行如下命令:
javah
-jni my.com.myndkproject.MyHelloNDK //-jni 後為你的類的包名加類名
3.執行完成後會在該路徑下生成對應的.h檔案,生成的程式碼如下
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class my_com_myndkproject_MyHelloNDK */ #ifndef _Included_my_com_myndkproject_MyHelloNDK #define _Included_my_com_myndkproject_MyHelloNDK #ifdef __cplusplus extern "C" { #endif /* * Class: my_com_myndkproject_MyHelloNDK * Method: getString * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_my_com_myndkproject_MyHelloNDK_getString (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
4.在工程的main目錄下新建一個名字為jni的目錄,然後將剛才的 .h檔案剪下過來。在jni目錄下新建一個c檔案,隨意取名,我的叫myhellotest.c 。然後編輯程式碼如下
// // Created by c_lj on 16-12-30. // #include "my_com_myndkproject_MyHelloNDK.h" /* * Class: my_com_myndkproject_MyHelloNDK * Method: getString * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_my_com_myndkproject_MyHelloNDK_getString (JNIEnv * env, jobject obj){ return (*env)->NewStringUTF(env,"This just a test for Android Studio NDK JNI developer!"); }
ndk.dir=/home/c_ljf/AndroidSDK/android-sdk-linux/ndk-bundle
sdk.dir=/home/c_ljf/AndroidSDK/android-sdk-linux
6.配置app/build.gradle的檔案apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "my.com.myndkproject"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
ndk {
moduleName "myhellotest" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //輸出指定三種abi體系結構下的so庫。
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:24.2.1'
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
}
7.build 工程就可以生成對應的庫了
1.MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv=(TextView)findViewById(R.id.tv);
MyHelloNDK myHelloNDK=new MyHelloNDK();
tv.setText(myHelloNDK.getString());
}
}
2.佈局檔案
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="my.com.myndkproject.MainActivity">
<TextView
android:text="Hello World!"
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
四.以後總結,馬上下班了。參考1:http://blog.csdn.net/yanbober/article/details/45309049/
參考2:http://www.open-open.com/lib/view/open1475221220286.html#articleHeader1
相關推薦
android NDK開發demo(基於android )
利用android studio進行NDK開發 一.新建android專案 新建Myndkproject工程,然後再新建一個class為MyHelloNDK的類,定義native方法。 public class MyHelloNDK { static {
Android-NDK開發之基礎--Android JNI有關Java類命名方式
(Ljava/lang/String;I)V 其中本句 I = IntegerB = ByteS = ShortC = CharLXXX; = L加上類名 3. 在JNI下面,我們常用的命名方式: static JavaVM *g_VM; //全
Android逆向基礎筆記—Android NDK開發4之Android studio NDK自動編譯
這部分就是最後的部分了,為什麼要寫Android studio呢。大家知道,eclipse 到了現在,已經不被Google支援了,所以現在最好的開發就是利用Android studio。雖然說,網上有
Android-NDK開發之基礎--Android JNI開發高階篇(JNI中的常用方法)
有關Android JNI開發中比較強大和有用的功能就是從JNI層建立、構造Java的類或執行Java層的方法獲取屬性等操作。 一、類的相關操作 1. jclass FindClass(JNIEnv *env, const char *name); 查詢類
玩轉Android Camera開發 五 基於Google自帶演算法實時檢測人臉並繪製人臉框 網路首發 附完整demo
本文主要介紹使用Google自帶的FaceDetectionListener進行人臉檢測,並將檢測到的人臉用矩形框繪製出來。本文程式碼基於PlayCameraV1.0.0,在Camera的open和preview流程上進行了改動。原先是放在單獨執行緒裡,這次我又把它放到
Android NDK開發之從環境搭建到Demo級十步流
寫在正文之前: 幾個月沒有更新部落格,感覺有點生疏了,所以說不能斷,一斷人就懶。 其實這幾個月也並不是什麼事也沒有做,俺可是時刻想著今年的任務呢,10本書,30篇博文…,這幾個月間斷性的也是在學習中,學H5,學設計模式,以及NDK JNI開發等等。 學習J
Android NDK 開發總結
設置 .text nbsp def runt 編寫 abi 文件的 targe 一.安裝配置環境 1.安裝Android Studio,下載路徑https://developer.android.com/studio/index.html?hl=zh-cn。我下載的是Win
android NDK開發中,用Cygwin調試本地代碼時報錯“Another debug session running,Use --force to kill it”原因及解決的方法
能夠 att cati kill 時報 andro 使用 deb gdb調試 在使用ndk-gdb調試的時候。運行$NDK/ndk-gdb --verbose報錯“Another debug session running,Use --force to kil
Android NDK開發及OpenCV初步學習筆記
-a cep cto strip 鏈接 jni 加載 idt jniexport https://www.jianshu.com/p/c29bb20908da Android NDK開發及OpenCV初步學習筆記 Super_聖代 關註 2017.08.19 00:
Android NDK開發 Android JNI專案建立
本篇文章只介紹android ndk在windows系統的編譯環境配置方法 更新於2015年1月11日 將更加詳細的介紹一個基本的Android Jni專案的建立。 步驟一:下圖是必須的,配置好這一步驟就可以進行Android JNI專案的建立了。 步驟二:新建一個Andr
Android NDK 開發教程三 Hello JNI 示例
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android NDK開發(一)CMake構建工具使用
一、Android studio中需要的外掛: CMake LLDB NDK 二、專案配置 ①build.gardle的配置 :多了兩個externalNativeBuild :def
ubuntu14.04搭建Android-NDK開發環境
1.建立Android平臺工作空間 mkdir AndroidWorkSpace 2.進入Android平臺工作空間,建立NDK工具目錄 cd AndroidWorkSpace mkdir NDK_Tools 3.獲取android-ndk-r10b 下載:wget ht
Android NDK開發之引入第三方庫
在Android開發中我們經常要把一些比較看重安全或者計算效率的東西通過JNI呼叫C/C++程式碼來實現,如果需要實現的功能簡單或者你的C/C++程式碼能力比較強,但是目前還是有很多功能強大的第三方庫的,比如openssl、FFmpeg等,呼叫這些第三方實現顯然比重複造輪子實際的多。 本教程適合將原始的動態
Android NDK開發掃盲及最新CMake的編譯使用
本篇文章旨在簡介 Android 中 NDK 是什麼以及重點講解最新 Android Studio 編譯工具 CMake 的使用 1 NDK 簡介 在介紹 NDK 之前還是首推 Android 官方 NDK 文件。傳送門 官方文件分別從以下幾個方面介紹了 NDK ND
android ndk開發crash崩潰定位:
android使用ndk開發crash崩潰定位: 1、法一:使用ndk-stack輸出呼叫堆疊 cd /home/hk/Android-Develop/android-ndk-r12b 將log.txt放在這個目錄 ./ndk-stack -sym
android NDK 開發(2)
java向native層傳遞引數 1.傳遞基本型別引數,可以直接使用 //Java層定義介面 public native static int sum(int a, int b); //.c檔案native層實現 JNIEXPORT jint JNICALL Java_c
android NDK 開發(3)
1.native層呼叫java層static方法 //java層定義方法 public native static void request(); //native層執行完request後回撥此方法 public static void nativeCallBack()
Android NDK開發之旅(6):JNI函式完全解析與專案實戰
對於基本型別而言,JNI與Java之間的對映是一對一的,比如Java中的int型別直接對應於C/C++中的jint;而對引用型別的處理卻是不同的,JNI把Java中的物件當作一個C指標傳遞到本地函式中,這個指標指向JVM中的內部資料結構,而內部資料結構在記憶體
Android NDK開發之CMake
知之為知之,不知為不知 哇!(先來個王者之哇助助興),最近的專案一直用到Android NDK,簡直頭皮發麻,每次底層出現問題,都要找同事幫忙,甚是尷尬,於是看一些帖子,稍微整理了一下,做個小筆記,同時也分享一下前人之經驗.不說了,開始進入正題. Android開發環境 工具:And