• 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
  • 相关阅读:
    关于工作习惯的一点思考
    BulkSqlCopy 批量导入数据(Ef支持)
    记录下最近项目中常用到的SQL语句
    对象化前端表单(Form)提交
    Python描述符 (descriptor) 详解
    Python装饰器之 property()
    Python魔法方法之属性访问 ( __getattr__, __getattribute__, __setattr__, __delattr__ )
    Python魔法方法总结及注意事项
    面向对象编程(二)
    面向对象编程(一)
  • 原文地址:https://www.cnblogs.com/alanfang/p/5393794.html
Copyright © 2020-2023  润新知