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

Posted 程序员入门进阶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 深入系统完全讲解(37)相关的知识,希望对你有一定的参考价值。

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

以上是关于Android 深入系统完全讲解(37)的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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