Android 深入系统完全讲解(37)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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 StudioFile | 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
文件没那个是人工手动在写时代发展就变成我们只给下简单配置就可以自动出来编
译文档。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: android