在Android AOSP中包含预构建的共享库

rom1v

我想使用libmylib.so一些AOSP代码中的预构建共享库(我们称之为),例如在folder中framework/av/media/libmedia

由于我的目标是Nexus 7,因此我创建了一个新文件夹device/asus/flo/mylib,其中放置了2个文件:

  • libmylib.so
  • Android.mk

我的第一次尝试是使用PREBUILT_SHARED_LIBRARYAndroid.mk如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libmylib
LOCAL_SRC_FILES := libmylib.so
include $(PREBUILT_SHARED_LIBRARY)

然后,我在libmedia模块中添加了依赖项(在中framework/av/media/libmedia/Android.mk,我添加libmylib到了LOCAL_SHARED_LIBRARIES列表中)。

不幸的是,构建(lunch aosp_flo-eng && make -j4)失败:

*** No rule to make target `out/target/product/flo/obj/SHARED_LIBRARIES/libmylib_intermediates/export_includes’, needed by `out/target/product/flo/obj/SHARED_LIBRARIES/libmedia_intermediates/import_includes’. Stop.

因此,我替换PREBUILT_SHARED_LIBRARYBUILD_PREBUILT(我不太了解其中的区别):

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libmylib
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
LOCAL_SRC_FILES := libmylib.so
include $(BUILD_PREBUILT)

这样,构建成功。

因此,我闪烁了图像:

fastboot flashall -w

但是很遗憾,平板电脑无法启动。adb logcat无限期打印:

E SurfaceFlinger: error posting framebuffer: -22
E qdgralloc: fb_post: FBIOPUT_VSCREENINFO for primary failed, str: Invalid argument
E SurfaceFlinger: error posting framebuffer: -22
E qdgralloc: fb_post: FBIOPUT_VSCREENINFO for primary failed, str: Invalid argument
E SurfaceFlinger: error posting framebuffer: -22
E qdgralloc: fb_post: FBIOPUT_VSCREENINFO for primary failed, str: Invalid argument

如果我libmylib从中删除framework/av/media/libmedia/Android.mk,一切都很好,平板电脑可以正常启动。

注意,我现在甚至没有调用该库,将其声明为libmedia依赖项这一简单事实是有问题的。

我尝试了几种方法.so(包括在平板电脑上测试过的一种方法,使用二进制程序直接在中调用了它公开的函数/data/local/tmp,因此.so可以)。

我可能错过了一些东西。有什么线索吗?

rom1v

我在Nexus 5上测试了同样的东西,幸运的是,它更加冗长:)

问题是,LOCAL_MODULE并且LOCAL_SRC_FILES没有使用相同的库名(这个问题在我的原始帖子中没有出现,因为我想抽象细节)。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libmylib
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
LOCAL_SRC_FILES := libsomething.so
include $(BUILD_PREBUILT)

该模块是libmylib,但源文件是libsomething.so

这样,存在一个/system/lib/libsomething.so,但是dlopen()失败因为/system/lib/libmylib.so未找到。

为两者使用相同的名称可以解决此问题:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libsomething
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
LOCAL_SRC_FILES := libsomething.so
include $(BUILD_PREBUILT)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android NDK预构建共享库使用

来自分类Dev

在Android AOSP中使用预建的共享库

来自分类Dev

无法将预构建的静态库与 Android NDK 中的共享库链接起来

来自分类Dev

带有实验性Gradle插件的Android Studio中的本机预构建共享库

来自分类Dev

视觉c ++跨平台android:包括预构建的共享库

来自分类Dev

从源代码构建Android-添加具有共享库的预构建应用

来自分类Dev

无法在Android Studio中包含共享库

来自分类Dev

如何在 android studio 中添加预构建的 *.so 库?

来自分类Dev

是否可以在Android应用程序中包含/链接并使用为Linux构建的共享库(.so)文件?

来自分类Dev

Android NDK构建共享库

来自分类Dev

如何使Android Q源构建共享库?

来自分类Dev

Android Gradle构建:父子之间的共享库

来自分类Dev

Android NDK可以将Windows dll包含到Android共享库中吗?

来自分类Dev

无法在 Android 项目中加载预构建的 OpenSSL 库

来自分类Dev

Android NDK:两个预构建的共享库,但是其中一个依赖于另一个

来自分类Dev

构建/安装Android Wear AOSP

来自分类Dev

如何包括许多共享库.so以构建android apk

来自分类Dev

Android AOSP构建在android-10.0.0_r39的build_image.py中失败

来自分类Dev

尝试包含本地库时,Android Studio Gradle构建失败

来自分类Dev

android中的预填充数据库

来自分类Dev

如何为Android Automotive OS构建AOSP?

来自分类Dev

Android:调试共享库

来自分类Dev

添加预构建库时Android NDK Cmake默认根目录

来自分类Dev

在AOSP Android.mk文件中,如何执行命令并在命令失败时使构建失败?

来自分类Dev

在 Android Studio 中构建 Android 库时出错

来自分类Dev

Android:在AOSP版本中包含su二进制可执行文件

来自分类Dev

在Android设备上运行的预构建binutils

来自分类Dev

Android.mk:从另一个共享库访问共享库中的函数

来自分类Dev

如何从共享库获取版本信息到Android清单中?

Related 相关文章

  1. 1

    Android NDK预构建共享库使用

  2. 2

    在Android AOSP中使用预建的共享库

  3. 3

    无法将预构建的静态库与 Android NDK 中的共享库链接起来

  4. 4

    带有实验性Gradle插件的Android Studio中的本机预构建共享库

  5. 5

    视觉c ++跨平台android:包括预构建的共享库

  6. 6

    从源代码构建Android-添加具有共享库的预构建应用

  7. 7

    无法在Android Studio中包含共享库

  8. 8

    如何在 android studio 中添加预构建的 *.so 库?

  9. 9

    是否可以在Android应用程序中包含/链接并使用为Linux构建的共享库(.so)文件?

  10. 10

    Android NDK构建共享库

  11. 11

    如何使Android Q源构建共享库?

  12. 12

    Android Gradle构建:父子之间的共享库

  13. 13

    Android NDK可以将Windows dll包含到Android共享库中吗?

  14. 14

    无法在 Android 项目中加载预构建的 OpenSSL 库

  15. 15

    Android NDK:两个预构建的共享库,但是其中一个依赖于另一个

  16. 16

    构建/安装Android Wear AOSP

  17. 17

    如何包括许多共享库.so以构建android apk

  18. 18

    Android AOSP构建在android-10.0.0_r39的build_image.py中失败

  19. 19

    尝试包含本地库时,Android Studio Gradle构建失败

  20. 20

    android中的预填充数据库

  21. 21

    如何为Android Automotive OS构建AOSP?

  22. 22

    Android:调试共享库

  23. 23

    添加预构建库时Android NDK Cmake默认根目录

  24. 24

    在AOSP Android.mk文件中,如何执行命令并在命令失败时使构建失败?

  25. 25

    在 Android Studio 中构建 Android 库时出错

  26. 26

    Android:在AOSP版本中包含su二进制可执行文件

  27. 27

    在Android设备上运行的预构建binutils

  28. 28

    Android.mk:从另一个共享库访问共享库中的函数

  29. 29

    如何从共享库获取版本信息到Android清单中?

热门标签

归档