Flutter MapBox错误-为Android构建应用程序时出现未经授权的401错误



在我的项目中,我使用mapbox_gl: ^0.14.0

当运行flutter build aar命令时,它失败了:

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':mapbox_gl:generateDebugRFile'.
> Could not resolve all files for configuration ':mapbox_gl:debugCompileClasspath'.
> Could not resolve com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.2.
Required by:
project :mapbox_gl
> Could not resolve com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.2.
> Could not get resource 'https://api.mapbox.com/downloads/v2/releases/maven/com/mapbox/mapboxsdk/mapbox-android-sdk/9.6.2/mapbox-android-sdk-9.6.2.pom'.
> Could not HEAD 'https://api.mapbox.com/downloads/v2/releases/maven/com/mapbox/mapboxsdk/mapbox-android-sdk/9.6.2/mapbox-android-sdk-9.6.2.pom'. Received status code 401 from server: Unauthorized
> Could not resolve com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.2.
Required by:
project :mapbox_gl > com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.9.0
> Could not resolve com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.2.
> Could not get resource 'https://api.mapbox.com/downloads/v2/releases/maven/com/mapbox/mapboxsdk/mapbox-android-sdk/9.6.2/mapbox-android-sdk-9.6.2.pom'.
> Could not HEAD 'https://api.mapbox.com/downloads/v2/releases/maven/com/mapbox/mapboxsdk/mapbox-android-sdk/9.6.2/mapbox-android-sdk-9.6.2.pom'. Received status code 401 from server: Unauthorized
> Could not resolve com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.2.
Required by:
project :mapbox_gl > com.mapbox.mapboxsdk:mapbox-android-plugin-localization-v9:0.12.0
project :mapbox_gl > com.mapbox.mapboxsdk:mapbox-android-plugin-offline-v9:0.7.0
> Could not resolve com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.2.
> Could not get resource 'https://api.mapbox.com/downloads/v2/releases/maven/com/mapbox/mapboxsdk/mapbox-android-sdk/9.6.2/mapbox-android-sdk-9.6.2.pom'.
> Could not HEAD 'https://api.mapbox.com/downloads/v2/releases/maven/com/mapbox/mapboxsdk/mapbox-android-sdk/9.6.2/mapbox-android-sdk-9.6.2.pom'. Received status code 401 from server: Unauthorized
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1m 30s

渐变任务assemblyArDebug失败,退出代码为1。

还有扑动医生:

[✓] Flutter (Channel stable, 2.8.0, on macOS 12.0.1 21A559 darwin-x64, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2020.3)
[✓] VS Code (version 1.63.2)
[✓] Connected device (2 available)

我认为这是秘密令牌的问题,因为它从服务器给了我未经授权的401。

我确保我把它放在我的全局(而不是项目(等级.properties中,密钥如下:MAPBOX_DOWNLOADS_TOKEN=sk.eyJ1Ij...我在另一个线程中看到,它可能应该是MAPBOX_DOWNLOAD_TOKEN,而不是MAPBOX_DowNLOAS_TOKEN但这无济于事。

我的秘密代币勾选了所有公共分数并下载:在秘密分数中勾选了阅读

所以,也许我的项目只是没有阅读它,但我不知道为什么。

您可以在这里找到android版Mapbox GL的文档:https://docs.mapbox.com/android/maps/guides/install/.

正如mapbox_gl插件开发人员所说,这是社区驱动的,而不是官方的mapbox产品

所以,只做https://docs.mapbox.com/android/maps/guides/install/#configure-凭据是flutter android项目文档的一部分。

  • 创建一个具有Downloads:Read作用域的秘密访问令牌

  • 在android/gradle.properties中将您的秘密令牌配置为MAPBOX_DOWNLOADS_TOKEN=YOUR_SECRET_MAPBOX_ACCESS_TOKEN

  • 在app/source/main/AndroidManifest.xml中配置权限为:

    <!-- Always include this permission -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- Include only if your app benefits from precise location access. -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
  • 请记住在项目中的MapboxMap小部件的accessToken属性中提供相同的密钥。

最新更新