Android NDK开发从入门到放弃

前段时间公司的SDK开发,核心逻辑要改用C/C++(花了点时间把还给老师的,重新拾回),我就把NDK开发相关资料文档整理一下方便你我他。

预备概念:

JNI:

它提供了若干的API实现了Java和其他语言的通信(主要是C/C++),这是JAVA层面的标准,我的理解就是C/C++调用这些接口转换成JAVA能“听”得懂的语言

NDK:

我的理解就是Android里Java和C/C++通信所需要的开发环境工具包(类似于使用JAVA要用JDK)

CMake:

我的理解就是编译工具,类似于Android Studio里的Gradle

如果我理解错误,希望指出。

准备动作:

首先国际惯例最权威官方:googlesamples/android-ndk

CMake:

Android Studio 2.2 更方便地创建JNI项目-CMake

JNI:

Android JNI编程—JNI基础
Android JNI编程—JNI函数大全

C/C++:

以前同事,曾经的黑客推荐的几本书和在线文档
在线文档:
C文档
C++文档
C 语言标准函数库速查
C++ 教程(如果不适应cppreference的目录结构可参考这个)
C++ 11 学习

PDF电子书下载:
C语言入门经典.pdf
C.Primer.Plus中文版.pdf
C++11中文版.pdf

起飞:

Android NDK 开发之旅,我只能帮到你这,有googlesamples的例子,有基础概念,有C/C++文档。接下来只能靠你自己了,Just do IT.

C++代码调试:

我的C++代码在Lib,无法直接调试需要特别设置
How to trace code in native lib?

In app/build.gradle, add compile dependency for debug and release builds with:

debugCompile project(path: ':your-lib', configuration: 'debug')
releaseCompile project(path: ':your-lib', configuration: 'release')

in lib(s)/build.gradle, enable publishNonDefault:

android {
    publishNonDefault  true
}

添加符号表:(非必要步骤)
Run > Edit Configuration > select ‘Debugger’ tab

add symbol directory of your debug symbol placed.

in my case, that was LIB_MODULE/.externalNativeBuild

多个Module输出多个so库:

# linking log lib to our native lib
# once you find the library, you have to link that library with your native library
# target_link_libraries structure:  target_link_libraries(you_native_lib  lib_found_using_find_library)
target_link_libraries(my_lib_name ${log-lib})

CMakeLists重命名so后,需要clean项目,刷新C++。删除 build 和 .externalNativeBuild目录,才会生效

后记:

为什么不整理写一篇完整教程呢?我觉得没必要,都是一些概念性的东西和流程化,写了也只是大同小异。所以直接引用

Ok,That’s all,Enjoy it.Good luck to you.
    原文作者:此人丶不用抒情
    原文地址: https://www.jianshu.com/p/8191a654dcb8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞