android - 升级到支持 AndroidX 的 Nativescript 6 后,谷歌地图在 Android 中停止工作
问题描述
在升级到 Nativescript 6 之前,一切正常。之后,在没有对配置进行任何更改的情况下,Android 在加载 MapView 时开始抛出异常:
ERROR Error: java.lang.RuntimeException: API key not found. Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml
JS: com.google.maps.api.android.lib6.drd.p.b(:com.google.android.gms.dynamite_mapsdynamite@18385084@18.3.85 (100700-262677519):22)
JS: com.google.maps.api.android.lib6.auth.d.a(:com.google.android.gms.dynamite_mapsdynamite@18385084@18.3.85 (100700-262677519):10)
JS: com.google.maps.api.android.lib6.impl.d.a(:com.google.android.gms.dynamite_mapsdynamite@18385084@18.3.85 (100700-262677519):41)
JS: com.google.android.gms.maps.internal.CreatorImpl.a(:com.google.android.gms.dynamite_mapsdynamite@18385084@18.3.85 (100700-262677519):61)
JS: com.google.android.gms.maps.internal.CreatorImpl.newMapViewDelegate(:com.google.android.gms.dynamite_mapsdynamite@18385084@18.3.85 (100700-262677519):32)
JS: com.google.android.gms.maps.internal.h.a(:com.google.android.gms.dynamite_mapsdynamite@18385084@18.3.85 (100700...
如“nativescript-google-maps-sdk”手册中所述,我在“应用程序”标签内有 AndroidManifest.xml 中的密钥
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="__PACKAGE__"
android:versionCode="200000"
xmlns:tools="http://schemas.android.com/tools"
android:versionName="2.0.0">
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"/>
<uses-sdk
android:minSdkVersion="22"
android:targetSdkVersion="28"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:name="Blahaha"
android:launchMode="singleInstance"
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme"
tools:replace="android:supportsRtl">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/nativescript_google_maps_api_key"/>
</application>
</manifest>
还尝试将密钥直接写入元数据标签:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIza**********************"/>
我的 app.gradle 是:
android {
defaultConfig {
generatedDensities = []
applicationId = "com.app.app"
renderscriptTargetApi 25
renderscriptSupportModeEnabled true
}
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
project.ext {
googlePlayServicesVersion = "+"
}
dependencies {
def googlePlayServicesVersion = project.googlePlayServicesVersion
compile "com.google.android.gms:play-services-location:$googlePlayServicesVersion"
}
package.json 中的插件版本:
"nativescript-google-maps-sdk": "^2.7.0"
我的项目是基于 Angular 的。
解决方案
迁移到 NativeScript 6 后,AndroidManifest.xml 文件保持在原来的位置 - 在./App_Resources/Android/
. 移动它以./App_Resources/Android/src/main/
解决问题。
推荐阅读
- google-chrome-extension - Hiding a tab, without killing it with Chrome API
- amazon-web-services - Is there a way to restrict what actions can be added on an IAM Policy by an IAM Role?
- swift - How do I stop the swift playground for a long running process?
- ios - How to switch on a RawRepresentable enum type in Swift
- python - 如何从电子邮件中下载文件并将其保存在 C:\
- python - 在 python 中跨进程共享数据
- python - “OSError: [Errno 22] Invalid argument:” 尝试使用 save() 保存编辑过的工作簿时
- python - 如何通过 ForeignKey 表选择一个具有第二个顺序和范围的表?
- r - 给定一个数字列表,编写一个函数,给出最大间隔及其大小。前任。2, 4, 9, 左=4, 右=9 间隔=5
- javascript - 带有打字稿的 vscode 调试器:什么决定了对象的呈现方式?