uni-app 勾选oauth后,Android打包报错

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

uni-app 勾选oauth后,Android打包报错

操作步骤:

  • APP勾选oauth,后提交云打包

预期结果:

  • Android打包正常

实际结果:

  • Android打包出错,错误日志详见error.txt

bug描述:

【报Bug】APP勾选oauth后,Android打包报错,以下是几处关键的报错信息

Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/03 to old ns http://schemas.android.com/sdk/android/repo/repository2/01  
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/03 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01  
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01  
Warning: unexpected element (uri:"", local:"extension-level"). Expected elements are <{}codename>,<{}layoutlib>,<{}api-level>  
Warning: unexpected element (uri:"", local:"base-extension"). Expected elements are <{}codename>,<{}layoutlib>,<{}api-level>  

FAILURE: Build failed with an exception.  

* What went wrong:  
Execution failed for task ':app:checkReleaseDuplicateClasses'.  
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable  
> Duplicate class com.google.android.gms.actions.ItemListIntents found in modules jetified-play-services-basement-17.5.0-runtime (com.google.android.gms:play-services-basement:17.5.0) and jetified-play-services-basement-18.1.0-runtime (play-services-basement-18.1.0.aar)  
Duplicate class com.google.android.gms.actions.NoteIntents found in modules jetified-play-services-basement-17.5.0-runtime (com.google.android.gms:play-services-basement:17.5.0) and jetified-play-services-basement-18.1.0-runtime (play-services-basement-18.1.0.aar)  
Duplicate class com.google.android.gms.actions.ReserveIntents found in modules jetified-play-services-basement-17.5.0-runtime (com.google.android.gms:play-services-basement:17.5.0) and jetified-play-services-basement-18.1.0-runtime (play-services-basement-18.1.0.aar)  
Duplicate class com.google.android.gms.actions.SearchIntents found in modules jetified-play-services-basement-17.5.0-runtime (com.google.android.gms:play-services-basement:17.5.0) and jetified-play-services-basement-18.1.0-runtime (play-services-basement-18.1.0.aar)  
Duplicate class com.google.android.gms.auth.api.signin.GoogleSignInAccount found in modules jetified-play-services-base-17.5.0-runtime (com.google.android.gms:play-services-base:17.5.0) and jetified-play-services-base-18.0.1-runtime (play-services-base-18.0.1.aar)  
Duplicate class com.google.android.gms.auth.api.signin.GoogleSignInOptions found in modules jetified-play-services-base-17.5.0-runtime (com.google.android.gms:play-services-base:17.5.0) and jetified-play-services-base-18.0.1-runtime (play-services-base-18.0.1.aar)  
Duplicate class com.google.android.gms.auth.api.signin.GoogleSignInOptions$Builder found in modules jetified-play-services-base-17.5.0-runtime (com.google.android.gms:play-services-base:17.5.0) and jetified-play-services-base-18.0.1-runtime (play-services-base-18.0.1.aar)

Go to the documentation to learn how to Fix dependency resolution errors.  
at com.android.build.gradle.internal.tasks.CheckDuplicateClassesDelegate.run(CheckDuplicateClassesDelegate.kt:71)  
at com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable.execute(CheckDuplicateClassesDelegate.kt:98)  
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)  
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)  
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)  
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)  
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)  
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)  
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)  
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)  
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)  
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)  
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)  
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)  
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)  
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)  
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)  
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)  
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)  
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:212)  
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187)  
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120)  
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162)  
at org.gradle.internal.Factories$1.create(Factories.java:31)  
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:249)  
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:109)  
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:114)  
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157)  
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126)  
... 2 more* Get more help at https://help.gradle.org  

BUILD FAILED in 53s  
gradle build error: 1

error.txt


3 回复

modules jetified-play-services-basement-17.5.0-runtime (com.google.android.gms:play-services-basement:17.5.0) and jetified-play-services-basement-18.1.0-runtime (play-services-basement-18.1.0.aar)
看起来是这个包的问题


项目中引用了极光推送的原生插件包

在使用 uni-app 进行开发时,如果在项目中勾选了 OAuth 功能,并且在 Android 打包时遇到报错,通常是由于配置或依赖问题导致的。以下是一些可能的解决方案:

1. 检查 manifest.json 配置

确保 manifest.json 文件中的 OAuth 配置正确。例如:

{
  "app-plus": {
    "distribute": {
      "android": {
        "oauth": {
          "weixin": {
            "appid": "your_weixin_appid",
            "appsecret": "your_weixin_appsecret"
          },
          "qq": {
            "appid": "your_qq_appid",
            "appsecret": "your_qq_appsecret"
          }
        }
      }
    }
  }
}

确保 appidappsecret 配置正确,并且与你在第三方平台(如微信、QQ)申请的配置一致。

2. 检查依赖库

OAuth 功能可能需要额外的依赖库。确保你的项目中已经正确引入了这些依赖。例如,微信登录可能需要 wechat-sdk-android

app 模块的 build.gradle 文件中添加依赖:

dependencies {
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0'
}

3. 检查 AndroidManifest.xml

确保 AndroidManifest.xml 文件中已经正确配置了 OAuth 相关的权限和 Activity。例如:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<activity
    android:name="com.tencent.tauth.AuthActivity"
    android:launchMode="singleTask"
    android:noHistory="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="tencent你的AppID" />
    </intent-filter>
</activity>

4. 检查打包环境

确保你的打包环境配置正确,包括 JDK、Android SDK、Gradle 等版本。可以尝试更新或降级相关工具版本。

5. 查看错误日志

查看详细的错误日志,通常可以在控制台或日志文件中找到更具体的错误信息。根据错误信息进行针对性的解决。

6. 清理项目

有时候,项目中的缓存或临时文件可能导致打包失败。可以尝试清理项目并重新打包:

# 清理项目
npm run clean

# 重新打包
npm run build:android
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!