android studio 1.4正式版 配置ndk

来源:互联网 发布:unity3d 剧情插件 编辑:程序博客网 时间:2024/06/08 17:54

公司闲的没事于是研究研究NDK,用的android studio 1.4 ,发现网上搜的配置各种不好使,捣鼓了大半天,终于发现了个github上的官方demo,终于搞定了

URL : https://github.com/googlesamples/android-ndk


简单记录一下步骤 :


1 创建一个新project, 

   修改gradle/wrapper/gradle-wrapper.properties, 将最后一排的

  distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
  变成
  distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip

2 修改build.gradle(不是app里边的) 将dependencies里边的变成
    classpath 'com.android.tools.build:gradle-experimental:0.2.0'
3 修改app/build.gradle,如下 ,是根据google的demo修改的,也没改多少
apply plugin: 'com.android.model.application'model {    android {        compileSdkVersion = 23        buildToolsVersion = "23.0.0"        defaultConfig.with {            applicationId = "yzx.test.jnn"            minSdkVersion.apiLevel = 11            targetSdkVersion.apiLevel = 23        }    }    compileOptions.with {        sourceCompatibility = JavaVersion.VERSION_1_7        targetCompatibility = JavaVersion.VERSION_1_7    }    /*     * native build settings     */    android.ndk {        moduleName = "yzx"        /*         * Other ndk flags configurable here are         * cppFlags += "-fno-rtti"         * cppFlags += "-fno-exceptions"         * ldLibs    = ["android", "log"]         * stl       = "system"         */    }    android.buildTypes {        release {            minifyEnabled = false            proguardFiles += file('proguard-rules.txt')        }    }    android.productFlavors {        // for detailed abiFilter descriptions, refer to "Supported ABIs" @        // https://developer.android.com/ndk/guides/abis.html#sa        create("arm") {            ndk.abiFilters += "armeabi"        }        create("arm7") {            ndk.abiFilters += "armeabi-v7a"        }        create("arm8") {            ndk.abiFilters += "arm64-v8a"        }        create("x86") {            ndk.abiFilters += "x86"        }        create("x86-64") {            ndk.abiFilters += "x86_64"        }        create("mips") {            ndk.abiFilters += "mips"        }        create("mips-64") {            ndk.abiFilters += "mips64"        }        // To include all cpu architectures, leaves abiFilters empty        create("all")    }}//demo里边没有这些需要的库,要自己加上dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:percent:23.0.0'    compile 'com.android.support:design:23.0.0'    compile 'com.android.support:appcompat-v7:23.0.0'}

4 在main文件夹下新建jni folder,里边就是.c文件.
  创建jni文件夹的时候可能会自动在app/build.gradle里边添加一些 jni.srcDir... 的东西导致错误,删除之
  创建.c文件和对应的java native方法.
  
java class :
    public class Nf {         static {                 System.loadLibrary("yzx");              }       public native String getStringFromC();    }
对应的.c文件 :
    #include <jni.h>    jstring Java_yzx_test_jnn_c_Nf_getStringFromC(JNIEnv *env, jobject obj) {        return (*env)->NewStringUTF(env, "hehe world");    }

然后  在MainActivity里边 
Toast.makeText(MainActivity.this, new yzx.test.jnn.c.Nf().getStringFromC(), Toast.LENGTH_SHORT).show();
就输出了..
大概就是这些了..


  

1 0
原创粉丝点击