7.5 源码讲解
 dlopen 打开动态库
 dlsym 找到符号
 (*print_func)(); 调用方法
 我们可以看到,要使用一个 so 库的某个方法,就上面三步骤,加载 ,查找 ,使用 。我
 们这里调用了 so 库中的 my_print 方法。
7.6 运行
 我们把 D:\android-ndk-r19c\hello-so\libs\armeabi-v7a 的 libhello-so.so 放到手机的
 /system/lib/。把 hello-exe 放到手机的 /system/bin/。 运行 hello-exe 可以看到打印结果
 Hello JNI !
 为什么要放置 libhello-so.so 到 /system/lib/ 目录呢? 因为,这个是 Android 上给配置的
 默认 so 库搜索路径。 具体 adb 连上手机 ,使用 export 看所有系统环境,使用 echo
 $PATH 看设置的路径。 Android Studio 写个 hello from C++
 8.1 环境搭建
 Android Studio 是开发 Android 应用程序的官方 IDE。 关于它的安装,使
 用 https://www.runoob.com/android/android-studio-install.html
 在安装好 Android Studio 后,打开 IDE ,依次点击 File | Settings | Appearance & Behavior |
 System Settings | Android SDK 选择 SDK Tools ,勾选 CMake ,LLDB 和 NDK(想选择更详细
 的,勾选右下角的 Show package Details), 等待更新完成。
 CMake 是编写编译规则的,NDK 是开发需要的库,编译工具,LLDB 是为了调试用的。
 8.2 hello from C++ 代码
 打开 Android Studio,File | New | New Project 填写基础信息,然后勾选 Include C++ support 一路下去,便会生成一个带着默认配置好的带着 C++ 代码的工程。
 我们直接用这个 Demo 工程讲解即可。
 8.3 编译应用,运行看效果
 目录解析
 9.1 hellojni\app\src\main 主要目录
 cpp 目录放置 native 代码
 java 放置 Java 代码
 res 放置资源
 9.2 hellojni\app\libs 放置库文件
如果有三方编好的库,放置到这里,然后在工程对应模块 build.gradle 下使用sourceSets {
 main {
 jniLibs.srcDirs = [‘libs’]
 }
 }
 配置上去。
 9.3 hellojni\app\build 编译过程以及结果
 generated 生成目录
 intermediates 编译中间过程
 outputs 输出内容
 其中:
 intermediates\cmake\debug\obj\arm64-v8a 这里面的带调试信息
 build\intermediates 里面内容细细看,这里面有很多编译过程输出,可以详细阅读。
 .externalNativeBuild 本地代码编译,我们的本地代码编译过程,就在这里面输出的。
 CMakeCache.txt 规则定义
 9.4 rules.ninja 生成的编译命令
 一条条的具体执行的命令,通过这个,可以看到每种类别的文件是通过什么命令出来的。想
 学习,阅读编译具体参数的,可以阅读这个文件。
 这里贴
 这里出来的是一条条规则,有注释和执行命令。我们想看具体某个文件怎么编译的,可以从
 这里找到信息。
9.5 build.ninja 编译脚本
 这里可以看到生成出来的命令,编译规则,工程的 CMake 生成的。不知道大家写过 Makefile
 文件没?那个是人工手动在写,时代发展,就变成我们只给下简单配置,就可以自动出来编
 译文档。



















