編輯:關於android開發
1. 新建project MyJNI,使用默認設置即可。
2. 新建Test類:右鍵com.example.myjni新建java類
3. 在Test類中編寫如下代碼,loadLibrary(“test”)中“test”庫為NDK庫名,之後將會定義。myFun()即為我們自定義的c++函數。
public class Test {
static {
System.loadLibrary("test");
}
native String myFun();
}
4. 生成Test類所對應的頭文件:打開AS Terminal,切換到$工作目錄$\MyJNI\app\src\main\java目錄下,鍵入命令:javah -jni -cp ;, com.example.myjni.Test生成頭文件(注意-cp之後是 空格+分號+逗號),經過嘗試直接使用“javah -jni com.example.myjni.Test”命令會出現“ Could not find class file for ‘com.example.myjni.Test’.”的錯誤。此時在java\目錄下就可以看到生成的.h文件了。
生成的.h內容如下:<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
5. 新建jni文件夾:在main目錄上右鍵,new->folder->jni floder
6. 將步驟4中生成的頭文件剪切到jni文件夾中,並且新建C++ source file “test.cpp”,編輯代碼如下:
#include "com_example_myjni_Test.h"
JNIEXPORT jstring Java_com_example_myjni_Test_myFun(JNIEnv *env, jobject obj) {
return env->NewStringUTF("hello, this is myFun output!");
}
jstring Java_com_example_myjni_Test_myFun(JNIEnv *env, jobject obj);
在編輯完頭文件之後,可以build一下,這樣便會提示相關變量類型及函數。至此代碼部分就搞定了~
7. 配置AS NDK環境:打開AS SDK manager在sdk tools中選擇Android NDK點擊安裝。
8.左鍵file,選擇project structure。進入sdk location,看到如下界面,選擇OK。此時NDK及SDK的目錄將會出現在local.properties中。
local.properties中代碼如下所示:
ndk.dir=D\:\\Users\\XXX\\AppData\\Local\\Android\\sdk\\ndk-bundle
sdk.dir=D\:\\Users\\XXX\\AppData\\Local\\Android\\sdk
9.向gradle.properties中加入android.useDeprecatedNdk=true
10.向app目錄下build.gradle文件中設置庫文件名(生成的so文件名),其moduleName “test”就是第3步中System.loadLibrary(“test”);中所填的庫名。
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.myjni"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
//添加部分
ndk{
moduleName "test"
}
//添加部分結束
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
11.至此我們第一個jni程序所需的所有步驟已經完成,點擊運行,查看結果。
android組合控件Titlebar的定制過程 前言:我相信”天生我才必有用”這句話,每個人都有他的作用,也許他的作用相對其他人來不是很明顯
三種POST和GET的提交方式,postget提交 向服務器提交數據有兩種方式,post和get。兩者的區別主要有三點,
【React Native開發】React Native控件之DrawerLayoutAndroid抽屜導航切換組件講解(13) (一)前言 今天我們一起來看一下抽屜
Android定位&地圖&導航——基於百度地圖移動獲取位置和自動定位,android定位城市 一、問題描述 使用百度地圖實現如圖所示應用,首先自