gpt4 book ai didi

android - 将自定义 SO 文件导入 AOSP

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:09:23 39 4
gpt4 key购买 nike

我已经按照本教程构建了一个 AOSP 系统服务: http://www.androidenea.com/2009/12/adding-system-server-to-android.html

现在我想使用一个预编译的 .so 文件,但不知道该把它放在哪里,这样我的代码才能访问它。

所以,我在 framewaork/base/libs/my_folder/创建了一个文件夹并把两个文件放在那里:my_lib.so安卓.mk

android.mk 的内容是:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE:= my_lib
LOCAL_MODULE_TAGS := optional

include $(BUILD_SHARED_LIBRARY)

make 运行没有错误,但是当代码尝试通过以下方式加载库时: System.loadLibrary("my_lib");

我遇到了这个错误:

06-27 13:58:55.581: E/AndroidRuntime(806): Caused by: java.lang.UnsatisfiedLinkError: Library my_lib not found;试过 [/vendor/lib/my_lib.so,/system/lib/my_lib.so]

所以我把so文件添加到out/target/product/generic/system/lib但得到了同样的错误。

那么我应该把 my_lib.so 文件放在哪里呢?它需要一个 android.mk 吗?也许我应该在系统的某个地方注册它?

提前致谢!

最佳答案

所以答案很简单。我真的需要将我的 lib 复制到系统镜像,到 system/lib 文件夹,因为 make 命令不会将它从 out/target/product/generic/system/lib 复制到 system.img

诀窍是添加这一行

  PRODUCT_COPY_FILES += $(LOCAL_PATH)/my_lib.so:system/lib/my_lib.so

到full.mk文件。它的位置是:安卓源/构建/目标/产品也把 my_lib.so 放在它附近(如路径所见)

如果您计划在真实设备上运行图像,请在设备名称定义之后添加此行。f.ex.如果你在 Nexus 4 上运行,把它放在 android-source/device/lge/mako/full_mako.mk

关于android - 将自定义 SO 文件导入 AOSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17345513/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com