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

参考资料:

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
原文地址:https://www.cnblogs.com/alanfang/p/5393794.html