美文网首页
NDK开发(一)——AS中配置环境

NDK开发(一)——AS中配置环境

作者: LichFaker | 来源:发表于2016-06-14 10:29 被阅读2475次

    开发环境

    Mac OSX 10.11.2
    Android Studio 2.1
    NDK-r11c

    准备工作

    1. 下载并解压NDK, 官网下载历史版本

    2. 添加到PATH中
      该操作不是必须的,如果通过命令ndk-build的方式手动编译的话则最好配置环境变量。初次执行ndk-build会提示:

    Mac系统需要在~/.bash_profile文件中配置NDK_PROJECT_PATH,如下:

    export NDK_PROJECT_PATH=../ndk/android-ndk-r11c #你的ndk目录
    export PATH=$NDK_PROJECT_PATH:$PATH
    # 执行 source ~/.bash_profile 使之生效
    source ~/.bash_profile
    

    集成到Android Studio 中

    1. 新建一个Android工程NDKTest
    2. 添加android.useDeprecatedNdk=true到app下的gradle.properties
    3. Project Structure->SDK Location->Android NDK Location中指定NDK的路径;或者直接在local.properties文件中指定ndk.dir,最终该文件内容为:
    ndk.dir=../ndk/android-ndk-r11c
    sdk.dir=../sdk
    
    1. main文件夹下创建一个JNI Folder
    2. 添加如下gradle配置:
    defaultConfig {
        ...
        ndk {
            // 模块名称
            moduleName = "ndk-test"
            // 指定编译平台,更多平台信息 参见https://developer.android.com/ndk/guides/abis.html#sa
            abiFilters "armeabi", "armeabi-v7a"
        }
    }
    sourceSets.main {
        // 你的源码目录
        jni.srcDir 'src/main/jni'
    }
    
    1. 创建一个NDKTest类,加载库并声明native方法:
    package com.lichfaker.ndktest;
    public class NDKTest {
        static {
            System.loadLibrary("ndk-test");
        }
        public static native String getString();
    }
    
    1. 此时方法getString()是有错误提示的,按下alt+enter创建native方法(如果之前没有指定sourceSets.main则这里具体方法无法创建成功)如下:
    2. 定义const char * returnValue = "Hello Jni";并在Activity中调用NDKTest.getString()

    运行测试

    1. 运行测试抛出了异常:
      java.lang.UnsatisfiedLinkError: Couldn't load ndk-test from loader dalvik.system.PathClassLoader...
      猜测可能是运行平台的原因,于是使用真机测试,但是然并卵...
      于是google之,终于找到了原因:
      原来gradle默认是将编译好的so文件放到libs目录下的, 而我们加载Library的时候默认是去main->jniLibs下查找的。
      我这是修改了jniLibs的默认路径为libs
    sourceSets.main {
        // 你的源码目录
        jni.srcDir 'src/main/jni'
        jniLibs.srcDirs = ['libs']
    }
    
    1. 重新打包运行,成功显示Hello Jni _

    相关文章

      网友评论

          本文标题:NDK开发(一)——AS中配置环境

          本文链接:https://www.haomeiwen.com/subject/mqpydttx.html