androidstudio3.0开发ndk

1.配置ndk环境

2.先写调用c代码的java代码

public class NDKTest {
    static {
        System.loadLibrary("myLib");
    }

    public native String getStrFromC();
}

myLib是加载的so库的文件名字===>如 : libmyLib.so

3.cd到app/src/main/java   输入:javah -d ../jni com.fanday.ndk.NDKTest

javah是生成一个头文件  -d制定头文件的生成目录  后面跟的包名是调用ndk的类名全路径

按下回车在main目录下生成jni目录和响应的头文件


4.gradle配置相当于eclipse中的android.mk文件作用

    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "com.fanday.ndk"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

        ndk {
            moduleName"myLib"
            ldLibs "log", "z", "m"
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
    }



5.gradle.properties加入

android.useDeprecatedNdk=true
允许使用旧版本的ndk,你配置的ndk路径可能和studio要求的不一致
6.在jni文件夹下写一个main.c文件

#include "jni.h"

JNIEXPORT jstring JNICALL Java_com_fanday_ndk_NDKTest_getStrFromC
        (JNIEnv *env, jobject jobj){
    jstring str = (*env)->NewStringUTF(env,"hello word from c");
    return str;
}

7.开始调用

public class MainActivity extends AppCompatActivity {



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

        // Example of a call to a native method
        TextView tv = (TextView) findViewById(R.id.sample_text);
        NDKTest ndkTest = new NDKTest();
        tv.setText(ndkTest.getStrFromC());
    }
直接运行

成功的话会在build目录下生成so库


app/build.

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "ndk.fanday.com.aaa"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        ndk {
            moduleName"diff"
            ldLibs "log", "z", "m"
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
    }

    sourceSets.main {
        jniLibs.srcDir 'libs'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

gradle



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值