uni-app制作安卓自定义基座一直提示lib/arm64-v8a/libgnustl_shared.so

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app制作安卓自定义基座一直提示lib/arm64-v8a/libgnustl_shared.so

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeReleaseNativeLibs'.  

A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction
2 files found with path 'lib/arm64-v8a/libgnustl_shared.so' from inputs:

* /srv/.gradle/caches/transforms-3/80fbdb81395920c68281dda7515a0ee8/transformed/jetified-DHPlayLibRetailModule-release/jni/arm64-v8a/libgnustl_shared.so  

* /srv/.gradle/caches/transforms-3/9b1c2f18552b8c637e866eda160584e2/transformed/jetified-HikCloudOpenSDK_v1.4.0_20240328/jni/arm64-v8a/libgnustl_shared.so
If you are using jniLibs and CMake IMPORTED targets, see
https://developer.android.com/r/tools/jniLibs-vs-imported-targets  

* Try:  

Run with --debug option to get more log output.
Run with --scan to get full insights.
Get more help at https://help.gradle.org.

链接:https://app.liuyingyong.cn/build/errorLog/fbbfac20-7bdd-11ef-9f9e-b55e74dc89f2

4 回复

DHPlayLibRetailModule 和 HikCloudOpenSDK_v1.4.0_20240328 同时包含了一个同名的so:libgnustl_shared.so
解决办法:
uni1项目是在 plus -> distribute -> google 节点下配置 packageOptions
“packagingOptions”: [
“pickFirst ‘lib/arm64-v8a/libgnustl_shared.so’”,
“pickFirst ‘lib/armeabi-v7a/libgnustl_shared.so’”
], 测试增加上述配置可以避免当前报错


感谢感谢 但是又报了Execution failed for task ‘:app:processReleaseResources’.

A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction Android resource linking failed uni.UNI70190C1.app-mergeReleaseResources-22:/values/values.xml:2198: error: resource attr/colorPrimaryVariant (aka uni.UNI70190C1:attr/colorPrimaryVariant) not found. error: resource style/Theme.MaterialComponents.DayNight.DarkActionBar (aka uni.UNI70190C1:style/Theme.MaterialComponents.DayNight.DarkActionBar) not found. uni.UNI70190C1.app-mergeReleaseResources-22:/values/values.xml:2191: error: style attribute ‘attr/colorPrimaryVariant (aka uni.UNI70190C1:attr/colorPrimaryVariant)’ not found. uni.UNI70190C1.app-mergeReleaseResources-22:/values/values.xml:2192: error: style attribute ‘attr/colorOnPrimary (aka uni.UNI70190C1:attr/colorOnPrimary)’ not found. uni.UNI70190C1.app-mergeReleaseResources-22:/values/values.xml:2194: error: style attribute ‘attr/colorSecondary (aka uni.UNI70190C1:attr/colorSecondary)’ not found. uni.UNI70190C1.app-mergeReleaseResources-22:/values/values.xml:2195: error: style attribute ‘attr/colorSecondaryVariant (aka uni.UNI70190C1:attr/colorSecondaryVariant)’ not found. uni.UNI70190C1.app-mergeReleaseResources-22:/values/values.xml:2196: error: style attribute ‘attr/colorOnSecondary (aka uni.UNI70190C1:attr/colorOnSecondary)’ not found. uni.UNI70190C1.app-mergeReleaseResources-22:/values/values.xml:2198: error: resource attr/colorPrimaryVariant (aka uni.UNI70190C1:attr/colorPrimaryVariant) not found. 这个错误

回复 1***@qq.com: 这是另外的问题了。 你需要排查一下添加的资源是否符合原生规则

在处理uni-app制作安卓自定义基座时遇到lib/arm64-v8a/libgnustl_shared.so相关错误,通常是因为缺少必要的库文件或者库文件版本不兼容。以下是一些可能的解决步骤和相关代码案例,帮助你定位并解决问题。

1. 确认NDK和STL配置

首先,确保你的NDK版本和STL(Standard Template Library)配置正确。在manifest.json文件中,检查app-plus -> android -> ndkstl的配置。

{
  "app-plus": {
    "android": {
      "ndk": {
        "version": "r21d" // 根据需要选择合适的NDK版本
      },
      "stl": {
        "type": "gnustl_shared" // 确保STL类型正确
      }
    }
  }
}

2. 添加缺失的库文件

如果确认配置无误,但仍然缺少libgnustl_shared.so,可能需要手动添加该库文件到项目中。你可以从其他项目中拷贝该文件,或者从NDK的安装路径中找到它。

  • 路径示例(假设NDK安装在默认位置):

    /path/to/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/21/libgnustl_shared.so
    

    注意:路径可能因NDK版本和架构不同而有所变化。

  • 将找到的libgnustl_shared.so文件复制到你的项目中的libs/arm64-v8a/目录下。

3. 打包自定义基座

确保所有文件都已正确放置后,重新打包自定义基座。

# 假设你使用的是HBuilderX,可以在HBuilderX中直接打包
# 或者使用命令行工具(如果有的话)

4. 验证基座

将生成的自定义基座安装到目标设备上,验证是否还存在相同的错误。

5. 检查其他依赖

如果问题仍然存在,检查是否有其他依赖项或插件也可能需要特定的STL版本或库文件。有时,第三方库或插件可能会引入额外的依赖。

6. 清理和重建

如果所有配置都正确,但问题依旧,尝试清理项目并重新构建。

# 在HBuilderX中,可以使用“清理项目”和“重新构建项目”

总结

以上步骤通常可以帮助解决因缺少libgnustl_shared.so导致的自定义基座打包问题。如果问题依然存在,建议检查uni-app和NDK的官方文档,或者寻求社区的帮助。

回到顶部