Android Studio NDK开发入门demo
1、创建工程,路径为C:\Users\Administrator\AndroidStudioProjects\xy
cn.xy.MainActivity.java代码如下
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.tv);
textView.setText(NDKTestFromJNI());
// Log.i("输出结果",""+NDKTestFromJNI());
}
static {
System.loadLibrary("demo");
}
public native String NDKTestFromJNI();
}
2、新建jni文件
新建demo.c
#include <jni.h>
JNIEXPORT jstring JNICALL Java_cn_xy_MainActivity_NDKTestFromJNI(JNIEnv *env, jobject obj){
return(*env)->NewStringUTF(env,"this is ndk demo");
}
新建Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := demo.c
include $(BUILD_SHARED_LIBRARY)
3、生成so文件
打开终端terminal执行如下代码
C:\Users\Administrator\AndroidStudioProjects\xy>cd app
C:\Users\Administrator\AndroidStudioProjects\xy\app>ndk-build
[arm64-v8a] Compile : demo <= demo.c
[arm64-v8a] SharedLibrary : libdemo.so
[arm64-v8a] Install : libdemo.so => libs/arm64-v8a/libdemo.so
[x86_64] Compile : demo <= demo.c
[x86_64] SharedLibrary : libdemo.so
[x86_64] Install : libdemo.so => libs/x86_64/libdemo.so
[mips64] Compile : demo <= demo.c
[mips64] SharedLibrary : libdemo.so
[mips64] Install : libdemo.so => libs/mips64/libdemo.so
[armeabi-v7a] Compile thumb : demo <= demo.c
[armeabi-v7a] SharedLibrary : libdemo.so
[armeabi-v7a] Install : libdemo.so => libs/armeabi-v7a/libdemo.so
[armeabi] Compile thumb : demo <= demo.c
[armeabi] SharedLibrary : libdemo.so
[armeabi] Install : libdemo.so => libs/armeabi/libdemo.so
[x86] Compile : demo <= demo.c
[x86] SharedLibrary : libdemo.so
[x86] Install : libdemo.so => libs/x86/libdemo.so
[mips] Compile : demo <= demo.c
[mips] SharedLibrary : libdemo.so
[mips] Install : libdemo.so => libs/mips/libdemo.so
显示如上则表示.so生成成功
4、配置
Build.gradle:
①Android 下
sourceSets{
main{
jniLibs.srcDirs = ['libs']
}
}
②Android 下defaultConfig增加
ndk{
moduleName "demo"
ldLibs"demo"
abiFilters"armeabi","mips","x86"
}
Gradle.properties:
增加:android.useDeprecatedNdk=true
Local.properties:
ndk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk\\ndk-bundle
sdk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk
5、编辑调试结果如下:
6、参考目录结构:
7参考下载地址
http://download.csdn.net/detail/tuchaofu/9576074