您的位置:首页 > 移动开发 > Android开发

Android开发笔记之《JNI常用知识汇总》

2016-04-15 00:57 495 查看
参考资料:

Android Studio中NDK开发 : http://www.tuicool.com/articles/NBjQny Android Studio使用新的Gradle构建工具配置NDK环境,gradlendk : http://www.android100.org/html/201509/18/182761.html 使用NDK移植开源项目,JNI的使用技巧:http://blog.csdn.net/pathfinder163/article/details/7244823
(牛人)Android Studio中NDK开发:http://www.race604.com/android-studio-with-ndk/?utm_source=tuicool&utm_medium=referral
利用NDK崩溃日志查找BUG:http://www.tuicool.com/articles/qQNfUfe


Android中libs目录下armeabi和armeabi-v7a的区别

armeabi默认选项,
支持基于 ARM* v5TE 的设备
支持软浮点运算(不支持硬件辅助的浮点计算)
支持所有 ARM* 设备

armeabi-v7a
支持基于 ARM* v7 的设备
支持硬件 FPU 指令
支持硬件浮点运算

不同手机由于cpu的不同,使用不同的驱动。
ABI:指应用基于哪种指令集来进行编译,ABI总共有四种,分别是armeabi、armeabi-v7a、mips、x86,它们都是表示cpu的类型。


Android Studio环境下的NDK开发

说明:Android Studio目前对NDK的支持处于测试阶段,很多地方还不完善。(2016.4.28)

如果把google工程师的开发分成三个阶段:
1. 完全不支持,需要开发者自行编写gradle,Makefile
2. 部分支持,开发者编写少量gradle配置脚本,无需Makefile
3. 完全支持,开发者只需直接添加jni相关c、c++文件即可

我的环境处于第二阶段,最新接触的朋友请时刻关注google的动态。
先简单介绍一下我的环境:
MacOS:10.10.5
Android Studio:2.0
Gradle:2.10  (Preference->Build,Execution,Deployment->Build Tools->gradle->Gradle Home)

下面介绍一下配置的基本方法:
1. 配置NDK.    a.下载NDK;b.File->Project Strcture->SDK Location->Android NDK Location
2. 配置全局Gradle,Project/build.gradle
//Begin: for ndk support, Step 1/3 [xiaxing]
// Delete:
// classpath 'com.android.tools.build:gradle:2.0.0'
// Change to :
classpath 'com.android.tools.build:gradle-experimental:0.2.0'
//End:

3. 配置app gradle, Project/app/build.gradle

apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 22
buildToolsVersion = "22.0.1"

defaultConfig.with {
applicationId = "com.shyla.lecar"
minSdkVersion.apiLevel  = 18  // Unable to load class com.android.build.gradle.managed.ProductFlavor_Impl
targetSdkVersion.apiLevel = 22
versionCode = 1
versionName = "1.0"
}
}

android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file('proguard-rules.pro')
}
}

compileOptions.with {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}

android.ndk {
moduleName = "NdkSample"
cppFlags += "-std=c++11"
cppFlags += "-fexceptions"
cppFlags += "-I${file("src/main/jni//include")}".toString()
ldLibs += ["android", "log"]
stl = "gnustl_shared"
}

android.productFlavors {
create("arm7") {
ndk.abiFilters.add("armeabi-v7a")
}
create("arm8") {
ndk.abiFilters.add("arm64-v8a")
}

}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
}

4. 同步一下gradle, Tooles->Android->Sync Project With Gradle Files
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: