这是一个创建于 1460 天前的主题,其中的信息可能已经有所发展或是发生改变。
尝试写了一个 NDK 应用,native 层代码能成功调用,apk 包里也有 so 文件。
手机上安装后有 /data/app/pkgName/lib/arm64 目录,但内容是空的。
查看应用的内存 maps,和打开的文件句柄都没有发现加载 so 文件,但 so 中的代码都已经被执行了,这个是在哪里加载的呢?
系统是 LineagesOS 16.0 对应 Android 9.
3 条回复 • 2020-06-20 19:22:44 +08:00
![yanqiyu](https://cdn.v2ex.com/gravatar/c00d2c0ec08778dd6b40fd3392a366a3?s=48&d=retro) |
|
1
yanqiyu 2020-06-19 18:05:23 +08:00
context.getApplicationInfo().nativeLibraryDir; 试一试?
|
![RikkaW](https://cdn.v2ex.com/avatar/05b5/2fb2/281077_normal.png?m=1570087331) |
|
2
RikkaW 2020-06-19 22:53:48 +08:00 1
`android:extractNativeLibs="false"` 则 so 不会解压。 AGP 3.6 以上默认 false,会帮你以页对齐且不压缩的形式把 so 塞进 apk,所以运行的时候就可以直接去(
|
![cache](https://cdn.v2ex.com/avatar/a4e5/6c27/15827_normal.png?m=1658718004) |
|
3
cache 2020-06-20 19:22:44 +08:00
|