uni-app 正式打包时, 渠道包勾选无及GooglePlay(AAB), APK打包成功, AAB打包失败

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

uni-app 正式打包时, 渠道包勾选无及GooglePlay(AAB), APK打包成功, AAB打包失败

开发环境 版本号 项目创建方式
Windows 11 HBuilderX

操作步骤:

  • APK及AAB都可以正常打包

预期结果:

  • APK及AAB都可以正常打包

实际结果:

  • APK及AAB都可以正常打包

bug描述:

正式打包时是, 渠道包勾选 无 及 GooglePlay(AAB), APK打包成功, AAB打包失败
提示信息如下:

ERROR: [PackagePath]/app/build/intermediates/external_libs_dex/release/mergeExtDexRelease: D8: java.nio.file.NoSuchFileException: [PackagePath]/app/build/intermediates/external_libs_dex/release/mergeExtDexRelease  
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:  
at com.android.builder.dexing.D8DexArchiveMerger.getMergingExceptionToRethrow(D8DexArchiveMerger.java:159)  
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:147)  
...

2 回复

请提供appid或者完整的错误日志链接地址。


在处理uni-app正式打包时遇到AAB(Android App Bundle)打包失败而APK打包成功的问题,这通常与Android项目的配置或资源文件有关。以下是一些可能的解决方案和相关的代码案例,你可以根据这些方向进行排查和修复。

1. 检查AndroidManifest.xml配置

首先确保AndroidManifest.xml中没有不兼容AAB打包的配置。AAB打包对资源和权限有更严格的要求。

<!-- 确保manifest文件中没有针对特定设备或API级别的限制 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

    <application
        ... >
        <!-- 确保所有必要的权限都已声明 -->
        <uses-permission android:name="android.permission.INTERNET" />
        ...
    </application>
</manifest>

2. 检查build.gradle配置

AAB打包需要正确配置build.gradle文件,特别是android部分。确保你的buildTypesproductFlavors配置正确。

android {
    ...
    defaultConfig {
        ...
        // 确保minSdkVersion和targetSdkVersion设置正确
        minSdkVersion 21
        targetSdkVersion 30
        ...
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
    // 如果使用了productFlavors,确保它们配置正确
    productFlavors {
        ...
    }
}

3. 检查资源文件

AAB打包对资源文件的处理更加细致,确保所有资源文件(如drawable、mipmap等)都按规范命名,并且没有缺失或错误的文件。

4. 使用Gradle插件和工具

确保你使用的Gradle插件版本与Android Studio和uni-app的要求相匹配。

dependencies {
    classpath 'com.android.tools.build:gradle:4.0.1' // 示例版本,根据实际需要调整
    ...
}

5. 查看打包日志

详细查看打包过程中的日志输出,通常可以找到导致打包失败的具体原因。关注与aaptdxproguard等相关的错误信息。

6. 清理和重建项目

有时候,简单的清理和重建项目可以解决一些不明原因的问题。

./gradlew clean build

如果以上步骤仍然无法解决问题,建议详细检查uni-app社区、官方文档或Google Play开发者支持论坛,看看是否有其他开发者遇到并解决了类似的问题。

回到顶部