MAC Android Studio jni配置

来源:互联网 发布:sql group by 小计 编辑:程序博客网 时间:2024/05/18 13:09

最近在mac下配置Android Studio 1.4的jdk和jni开发时遇到了很多坑,在这里记录一下如何配置Android Studio的jdk开发,以实现Android Studio对jni开发的支持(包括编译和代码提醒等功能),虽然现在网上很多资料博客什么的都说Android Studio不支持(打脸)。

先来一些有用的资料:

使用gradle-experiment工具编译jni

Android Studio配置JNI

好啦,现在记录一下我的配置方法以及遇到的一些问题。

首先,我们需要准备好ndk r10e,这个版本一定要是这个,不然下面配置好之后编译的时候会提示找不到sys/cdefs.h这个文件。

接下来,我们需要确定一下gradle和gradle jni plugin的版本。

Plugin Version Gradle Version 0.1.0 2.5 0.2.0 2.5 0.3.0-alpha3 2.6 0.4.0 2.8 0.6.0-alpha1 2.8 0.6.0-alpha5 2.10 0.7.0-alpha12.10 

这是来自官方文档的一个表格,我们可以根据自己要使用的gradle版本找到对应的gradle-experiment。

然后,我们打开gradle文件夹下的gradle-wrapper.properties文件,修改以下设置:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
这里我使用的gradle版本是2.10,如果你本地没有的话,需要去下载一个,然后放到android studio.app的gradle文件夹下。

然后,根据gradle的版本,我们可以从上表得知我们的gradle-experiment工具的版本应该是0.7.0-alpha1或者0.6.0-alpha5,我是这样做的,打开Project得到build.gradle文件,将原来的:

classpath 'com.android.tools.build:gradle:1.3.0'
修改成:

classpath 'com.android.tools.build:gradle-experimental:0.7.0-alpha1'
接下来,我们需要修改app的build.gradle了,因为配置的语法不同了。

apply plugin: 'com.android.model.application'model {    android {        compileSdkVersion = 23        buildToolsVersion = "23.0.2"        defaultConfig {            applicationId "com.ivan.healthcare.healthcare_android"            minSdkVersion.apiLevel  14  // Unable to load class com.android.build.gradle.managed.ProductFlavor_Impl            targetSdkVersion.apiLevel 23            versionCode 1            versionName "1.0"        }    }    android.buildTypes {        release {            minifyEnabled false            proguardFiles.add(file('proguard-rules.pro'))            ndk {                debuggable true            }        }    }    android.ndk {        moduleName "HCUtil"        CFlags.add("-DCUSTOM_DEFINE")        cppFlags.add("-DCUSTOM_DEFINE")        ldFlags.add("-L/custom/lib/path")        ldLibs.add("log")        stl "stlport_static"    }    android.productFlavors {        create("arm7") {            ndk.abiFilters.add("armeabi-v7a")        }        create("armeabi") {            ndk.abiFilters.add("armeabi")        }        create("x86") {            ndk.abiFilters.add("x86")        }    }}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    testCompile 'junit:junit:4.12'    compile 'com.google.code.gson:gson:2.5'    compile 'com.android.support:appcompat-v7:23.1.1'    compile 'com.android.support:design:23.1.1'    compile 'com.squareup.okhttp:okhttp:2.4.0'    compile 'com.squareup.okio:okio:1.5.0'    compile 'de.hdodenhof:circleimageview:2.0.0'    compile 'com.github.traex.rippleeffect:library:1.3'    compile 'com.theartofdev.edmodo:android-image-cropper:1.2.+'}
这是我项目中的gradle配置,我们可以看到2.10的gradle语法跟2.4的语法不一样了。

具体可以参考上面给出的链接。

1 0
原创粉丝点击