Android studio配置NDK问题小结
2016-05-03 17:12
453 查看
1. Plugin with id 'com.android.model.application' not found
修正最上层的build文件,
2. 支持C++11,在app的build文件内修改
有类似 cppFlags "-std=c++11"
也有类似cppFlags +="-std=c++11"方式,我最后编译通过是使用了add方式
网上有说在gradleWrapper中如果使用的是2.5,cppFlags 的添加则使用 += 的方式,否则需要使用.add的方式
(我的是gradle-2.10-all,可在gradle/wrapper/gradle-wrapper.properties文件中查看)
哪位小伙伴如果清楚为什么会有这么多配置方式请指点明路呀,多谢!!!
3. The currently selected variant "arm7-debug" uses split APKs, but none of the 1 split apks are compatible with the current device with density "480" and ABIs "x86".
最开始以为需要在 productFlavors 内增加x86的支持,结果增加后仍然提示此问题。
最后在NDK中通过增加 abiFilters.add("x86") 的方式解决
4. 同时生成多个so文件
由于对gradle配置不熟悉的原因,导致很多问题绕了好多圈子。例如想要生成多个so的方法如下,即在ndk中配置多个moduleName
修正最上层的build文件,
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { //classpath 'com.android.tools.build:gradle:2.0.0' classpath 'com.android.tools.build:gradle-experimental:0.7.0-rc1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } .... }同时修改app目录下的build.gradle文件(红色部分),如果
apply plugin:'com.android.model.application'; model { android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.king.mytest" minSdkVersion.apiLevel 15 targetSdkVersion.apiLevel 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles.add(file('proguard-rules.pro')) } } ndk { moduleName = "NdkSample" cppFlags.add("-std=c++11") cppFlags.add("-fexceptions") abiFilters.add("armeabi") abiFilters.add("x86") ldLibs.add("android") ldLibs.add("log") stl = "gnustl_shared" } productFlavors { create("arm") { ndk.abiFilters.add("armeabi") } create("arm7") { ndk.abiFilters.add("armeabi-v7a") } create("arm8") { ndk.abiFilters.add("arm64-v8a") } create("x86") { ndk.abiFilters.add("x86") } create("x86-64") { ndk.abiFilters.add("x86_64") } create("mips") { ndk.abiFilters.add("mips") } create("mips-64") { ndk.abiFilters.add("mips64") } // To include all cpu architectures, leaves abiFilters empty //create("all") } compileOptions.with { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } }//end android } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) //testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' }
2. 支持C++11,在app的build文件内修改
ndk { moduleName = "NdkSample" cppFlags.add("-std=c++11") cppFlags.add("-fexceptions") abiFilters.add("armeabi") abiFilters.add("x86") ldLibs.add("android") ldLibs.add("log") stl = "gnustl_shared" }其中有个比较有意思的是,也是让我搞了大半天的问题是加入这些配置项的写法问题
有类似 cppFlags "-std=c++11"
也有类似cppFlags +="-std=c++11"方式,我最后编译通过是使用了add方式
网上有说在gradleWrapper中如果使用的是2.5,cppFlags 的添加则使用 += 的方式,否则需要使用.add的方式
(我的是gradle-2.10-all,可在gradle/wrapper/gradle-wrapper.properties文件中查看)
哪位小伙伴如果清楚为什么会有这么多配置方式请指点明路呀,多谢!!!
3. The currently selected variant "arm7-debug" uses split APKs, but none of the 1 split apks are compatible with the current device with density "480" and ABIs "x86".
最开始以为需要在 productFlavors 内增加x86的支持,结果增加后仍然提示此问题。
最后在NDK中通过增加 abiFilters.add("x86") 的方式解决
4. 同时生成多个so文件
由于对gradle配置不熟悉的原因,导致很多问题绕了好多圈子。例如想要生成多个so的方法如下,即在ndk中配置多个moduleName
ndk { moduleName = "NdkSample" cppFlags.add("-std=c++11") cppFlags.add("-fexceptions") abiFilters.add("armeabi") abiFilters.add("x86") ldLibs.add("android") ldLibs.add("log") //stl = "gnustl_shared" //c code moduleName = 'hello-jni' toolchain = 'clang' CFlags.addAll(['-Wall']) }
相关文章推荐
- Android MediaPlayer
- windowManager.addView()抛出WindowManager$InvalidDisplayException异常
- Android 短信拦截及用途分析
- android webview设置以及与h5交互
- 【英文版本】Android开源项目分类汇总
- Android精品开源整理
- android dialog圆角显示及解决出现的黑色棱角.(友情提示)
- Android系统定制之bootanimation.zip的制作
- Android控制水平方向字体缩放android:textScaleX
- Fragment与Activity的生命周期
- android raw与assets区别
- 学习笔记(十一)服务
- Android 中所有View的上拉加载下拉刷新
- android 5.0 以上获取栈顶应用包名以及程序锁的实现
- android 客户端生成随机验证码的实现
- android点击输入法会把底部顶上去的解决办法
- android/java 中两种延时执行的方法
- Android页面之间进行数据回传
- 关于android里的文件创建及读写问题
- Android创建文件夹及文件并写入数据