乐于分享
好东西不私藏

uniapp打包错误-mergeReleaseNativeLibs

uniapp打包错误-mergeReleaseNativeLibs

这个错误为最为常见的so文件异常错误,一般为多个插件同时包含了相同的so文件同时提交到云端打包出现的异常错误

异常示例

以下是HBuilderX云打包编译错误信息。请结合当前uni-app/uni-appx项目上下文分析失败原因,指出最可能的问题代码或配置,并给出可执行的修复步骤。Note:[PackagePath]/wgtRoot/__UNI__1840CDO/uni_modules/FaceAl-Search/utssdk/app-android/src/FaceSearchActivity.java uses or overrides adeprecated API.Note: Recompile with -Xlint:deprecation for details.FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:mergeReleaseNativeLibs'.> A failure occurred while executingcom.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction> 2 files found with path 'lib/arm64-v8a/libyuv.so' from inputs:/srv/.gradle/caches/8.14.3/transforms/cc9177258e12fbd658b14d09781e3456/transformed/jetified-media-livepusher-release/jni/arm64-v8a/libyuv.so/srv/.gradle/caches/8.14.3/transforms/69a03a31bc7ffc6e10b12c39dfb2045d/transformed/jetified-libuvccamera-release/jni/arm64-v8a/libyuv.soIf you are using jniLibs and CMake IMPORTED targets, seehttps://developer.android.com/r/tools/jniLibs-vs-imported-targets

解决方法

找到错误的位置

如上面的示例错误位置为

2 files found with path 'lib/arm64-v8a/libyuv.so' from inputs:

说明提交打包是同时提交了lib/arm64-v8a/libyuv.so文件,只需要在manifest.json文件中配置packagingOptions即可

配置packagingOptions

打开项目的manifest.json文件,打开`源码视图`在`distribute > android`节点下配置`packagingOptions`节点并配置`pickFirst`参数,如下方代码所示:

/* android打包配置 */"android" : {    "permissions" : [        "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",        "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",        "<uses-permission android:name=\"android.permission.VIBRATE\"/>",        "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",        "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",        "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",        "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",        "<uses-permission android:name=\"android.permission.CAMERA\"/>",        "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",        "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",        "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",        "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",        "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",        "<uses-feature android:name=\"android.hardware.camera\"/>",        "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",        "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",        "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>"    ],    "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],    "packagingOptions" : [        "pickFirst 'lib/arm64-v8a/libyuv.so'",        "pickFirst 'lib/armeabi-v7a/libyuv.so'"    ]}

建议

如果出现类似`2 files found with path 'lib/arm64-v8a/libyuv.so'`的错误建议将`armeabi-v7a``arm64-v8a``x86`一起配置,免得差一个没有配置提交打包后还是出现这种异常

配置完成后提交打包即可解决此问题

注意

如果打包完成后出现运行异常,此时只能通过找插件作者解决此问题

相关学习资料