uni-app 勾选oauth后,Android打包报错
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
3 回复
项目中引用了极光推送的原生插件包
在使用 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"
}
}
}
}
}
}
确保 appid
和 appsecret
配置正确,并且与你在第三方平台(如微信、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