android 如何解决:未能解决:Map框软件开发包:Map框-安卓系统软件开发包:9.5.0

p4rjhz4m  于 2023-04-04  发布在  Android
关注(0)|答案(9)|浏览(235)

我在Android Studio中尝试使用mapbox时遇到了这个问题
未能解决:Map框软件开发包:Map框-安卓系统软件开发包:9.5.0
有什么问题?
我的build.gradle依赖项

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.5.0'
}

我的build.gradle项目

buildscript {
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.1"
    }
}

allprojects {
    repositories {
  google()
        jcenter()
        maven { url 'https://mapbox.bintray.com/mapbox' }

    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}
vs91vp4v

vs91vp4v1#

这只是解释得不好。你必须制作一个私有令牌。公共令牌不起作用。当你创建一个令牌时,有一个字段“读取:下载”只需标记它并生成你的令牌。这个令牌应该起作用。

fdx2calv

fdx2calv2#

版本9.5.0(和9.6.0)也已存在(请参见此处的发行说明:https://github.com/mapbox/mapbox-gl-native-android/blob/main/CHANGELOG.md)。只是访问Maven存储库的方式随着Mapbox Maps SDK〉v9.4.0而改变了。
我不鼓励你使用像mapbox-android-sdk:8.6.7这样过时的版本,但是选择com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.0
访问mave存储库的新方法记录在这里:https://docs.mapbox.com/android/maps/overview/#configure-credentials
现在,您需要创建一个秘密访问令牌,并使用它来访问库所在的maven repo。您的模块级build.gradle应该包含以下内容:

allprojects {
  repositories {
    maven {
      url 'https://api.mapbox.com/downloads/v2/releases/maven'
      authentication {
          basic(BasicAuthentication)
      }
      credentials {
        // Do not change the username below.
        // This should always be `mapbox` (not your username). 
          username = 'mapbox'
          // Use the secret token you stored in gradle.properties as the password
          password = project.properties['MAPBOX_DOWNLOADS_TOKEN'] ?: ""
      }
    }
  }
}
ibps3vxo

ibps3vxo3#

只要使用这个安全的版本,它将在您的Gradle上工作。

implementation ('com.mapbox.mapboxsdk:mapbox-android-sdk:9.2.0'){
        exclude group: 'group_name', module: 'module_name'
    }
fiei3ece

fiei3ece4#

按照前面的回答生成私钥,并在maven central上找到实际版本,找到解决方案。在编写本文时,maven central存储库上没有9.7和10版本,使用此处找到的9.2版本
https://mvnrepository.com/artifact/com.mapbox.mapboxsdk/mapbox-android-sdk
编辑:能够通过更改设置使用9.7.0 mapbox。gradle条目
存储库模式.set(存储库模式.FAIL_ON_PROJECT_REPOS)

存储库模式设置(存储库模式首选项项目)
和build.gradle将mavenCentral()和google()添加到所有项目存储库

allprojects {
    repositories {
        google()
        mavenCentral()
        
        allprojects {
            repositories {
                maven {
                    url 'https://api.mapbox.com/downloads/v2/releases/maven'
                    authentication {
                        basic(BasicAuthentication)
                    }
                    credentials {
                        // Do not change the username below.
                        // This should always be `mapbox` (not your username).
                        username = 'mapbox'
                        // Use the secret token you stored in gradle.properties as the password
                        password = project.properties['MAPBOX_DOWNLOADS_TOKEN'] ?: ""
                    }
                }
            }
        }
    }
}
9w11ddsr

9w11ddsr5#

唯一的方法得到了我的项目最终工作是通过寻找一些指针在项目中附在这里:https://github.com/mapbox/mapbox-maps-android/issues/614#issue-988592394它使用com.mapbox.maps:android:10.0.0-rc.3,实际上在我的机器上工作。
为了让我自己的项目工作,我不得不更改设置。gradle从这个:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}
rootProject.name = "Mapbox Map"
include ':app'

改为:

rootProject.name = "Mapbox Map"
include ':app'
ovfsdjhp

ovfsdjhp6#

Mapbox提供的默认令牌是我认为你正在使用的,你需要创建一个新的私有令牌并检查此权限DOWNLOAD:READ,然后它应该工作。
我创建了一个新的令牌,并将其命名为first,在我的情况下,您可以称之为任何东西。

bnl4lu3b

bnl4lu3b7#

尝试一个版本如何,实际上是exists

implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:8.6.7'
disbfnqx

disbfnqx8#

您应该删除此行:maven{ url 'https://mapbox.bintray.com/mapbox' }

repositories {
    google()
    jcenter()
    mavenCentral()
    /**
    if you using => maven { url 'https://mapbox.bintray.com/mapbox' }
     so remove this line because mapbox remove repository from https://mapbox.bintray.com/mapbox
    * */
    maven { url "https://oss.sonatype.org/content/groups/public/" }
    maven { url 'https://jitpack.io' }
    maven {
        url 'https://api.mapbox.com/downloads/v2/releases/maven'
        authentication {
            basic(BasicAuthentication)
        }
        credentials {
            // Do not change the username below.
            // This should always be `mapbox` (not your username).
            username = 'mapbox'
            // Use the secret token you stored in gradle.properties as the password
            password = project.properties['MAPBOX_DOWNLOADS_TOKEN'] ?: ""
        }
    }
}
ee7vknir

ee7vknir9#

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

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

所以,只做https://docs.mapbox.com/android/maps/guides/install/#configure-credentialsflutter android项目文档的www.example.com部分。

*创建访问密钥令牌,作用域为Downloads:Read
*在android/ www.example.com中将您的密钥令牌配置gradle.properties为APBOX_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属性中提供相同的密钥。

相关问题