我试图在我的二进制文件中访问libsparese库,它存在于供应商分区中,但是libsparse库在系统分区中,在构建期间它抛出以下错误。
(native:vendor)不应该链接到libsparse(native:platform)
如果它存在于system / lib64 /中,我该如何使用该库?
您不得链接非NDK平台库。
本机库必须仅使用公共API,并且不得链接到非NDK平台库。从API 24开始,强制执行此规则,并且应用程序不再能够加载非NDK平台库。该规则由动态链接器强制执行,因此无论代码尝试加载它们的方式如何,都无法访问非公共库:System.loadLibrary,DT_NEEDED条目和对dlopen(3)的直接调用都将完全相同。
如果您的模块依赖于任何系统模块,那么您可以按照以下步骤将模块链接到系统模块。
示例: - 模块A是供应商平台模块模块B是系统平台模块,在模块A中包含模块B后,您将收到以下错误。模块A(本机:供应商)不应链接到模块B(本机:平台) )然后..................有一个解决方案..
现在您可以在模块A中使用模块B. :)
如果您的模块依赖于任何系统模块,那么您可以按照以下步骤将模块链接到系统模块。
示例: - 模块A是供应商平台模块模块B是系统平台模块,在模块A中包含模块B后,您将收到以下错误。模块A(本机:供应商)不应链接到模块B(本机:平台) )然后..................有一个解决方案..
在模块A make文件的“LOCAL_C_INCLUDES + =”中添加模块B绝对路径。 LOCAL_C_INCLUDES + = \ / system // include
模块B是共享库,然后在模块A make文件中添加。 LOCAL_LDFLAGS + = $(调用intermediates-dir-for,SHARED_LIBRARIES,B)/B.so
最后在模块A LOCAL_ADDITIONAL_DEPENDENCIES:= B中为模块B添加附加依赖项
现在您可以在模块A中使用模块B. :)