JNI: 使用NDK

英文网站 http://tools.android.com/tech-docs/new-build-system/gradle-experimental

Requirements:
Gradle 2.5 only
Android NDK r10e (if you are using NDK)
SDK with Build Tools at least version 19.0.0 and we aim to minimize the amount of changes needed for the migration process in the future. Some features may require a more recent version.


首先到C:\Users\用户名\.gradle\wrapper\dists\gradle-1.10-all下确认gradle的版本 不是2.5 的,去https://services.gradle.org/distributions 下载2.5 的版本 ,注意要放到目录下的一个随机字符串的子目录下

我的是 C:\Users\用户名\.gradle\wrapper\dists\gradle-1.10-all\d90a2yjknzzhpcfgm937zpcte

接着下载 NDK r10e 解压找个文件放在就好,路径别有中文,,然后修改 项目右击 -->open module setting


1.ndk location: F:\ChenLing\AndroidStudio\android-ndk-r10
2.需要将根目录下的gradle修改为实验性的gradle
classpath 'com.android.tools.build:gradle-experimental:0.2.0'


3.已经有gradle 2.5的支持
4.然后修改原来的app/build.gradle,注意现在各项配置都是有等号的,并且使用的是 com.android.model.application
而不再是原来的com.android.application,如果是Library,则 是com.android.model.library。
然后android外围包了一层model。原来在android里面的buildTypes 移到了外面

apply plugin: 'com.android.model.application'model{    android {        compileSdkVersion = 23        buildToolsVersion = "23.0.2"        defaultConfig.with {            applicationId = "android.cl.com.forthtest02ndk_zbar"            minSdkVersion.apiLevel = 14            targetSdkVersion.apiLevel = 23            versionCode = 1            versionName = "1.0"        }        tasks.withType(JavaCompile) {            //指定编译JDK版本            sourceCompatibility = JavaVersion.VERSION_1_7            targetCompatibility = JavaVersion.VERSION_1_7        }    }    android.ndk {        moduleName = "test"        ldLibs +="log"        abiFilters +="armeabi"        abiFilters +="armeabi-v7a"        abiFilters +="x86"    }    android.buildTypes {        release {            minifyEnabled = false            proguardFiles += file( 'proguard-rules.pro')        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:22.2.1'
在android.ndk中进行ndk的配置,模块名字是必须的。然后使用了log,并且支持armeabi,armeabi-v7a,x86三个平台。
5.然后增加jni目录,在main上右键新建jni目录


配好 环境,后面新建一个运行项目就直接参考 :http://yanbober.github.io/2015/02/14/android_studio_jni_1/

由于修改个项目为NDK,每次修改build.gradle都需要重启,要不module报错,没办法,这个软件的bug
有一些需要注意的是:切换到build/intermediates/classes/debug/文件夹下,说实话,我没找到这个文件夹
还有别看我配的NDK build.gradle 有波浪线提醒 , NdkJniUtils 里有报红 ,但是是可以使用的, 哈哈哈哈
so : 从Android Studio的Terminal里进入到, <Project>/src/main/java 目录下,
执行javah XXX.XX.XXX 即可, XXX.XX.XXX是要生成.h文件的完整路径名,包名+文件名
eg:
F:\ChenLing\AndroidStudio\ThirdTest01>cd ndkjni

F:\ChenLing\AndroidStudio\ThirdTest01\ndkjni>cd src/main/java

F:\ChenLing\AndroidStudio\ThirdTest01\ndkjni\src\main\java>javah -jni android.cl.com.ndkjni.NdkJniUtils
后面的跟着文章继续



更多相关文章

  1. AndClear - Android(安卓)Clean-up Management Software
  2. android 修改桌面widget开机后,加载慢的问题
  3. android 6.0锁屏界面时间位置修改
  4. Android定义一个不消失的悬停通知栏
  5. Android获取apk的版本及包名等信息
  6. [Android] Ignoring InnerClasses attribute for an anonymous i
  7. ndk 历史版本下载
  8. Android(安卓)Q 版本新的网络状况判断方式
  9. android滑动删除的一个开源项目SwipeDelMenuLayout的简单使用

随机推荐

  1. android perimission 和 user-perimissio
  2. Android使EditText和SearchView取消默认
  3. 新建项目出现android support library问
  4. 利用View.inflate加载xml
  5. Android WebRTC
  6. 单独编译android模块
  7. 关于Android中android.content.res.Resou
  8. android(25)(android下实现多线程断点下载)
  9. Android Studio新建项目Rendering Proble
  10. Android电池管理