mapView.onCreate 在 api 级别 26 的cordova android 应用程序中工作正常,但在 api 级别 28 时崩溃
Posted
技术标签:
【中文标题】mapView.onCreate 在 api 级别 26 的cordova android 应用程序中工作正常,但在 api 级别 28 时崩溃【英文标题】:mapView.onCreate works fine in cordova android app with api level 26, but crashes with api level 28 【发布时间】:2021-05-12 22:19:16 【问题描述】:我有一个使用 mapkit 插件的 7 岁的 Cordova android 应用程序。该插件将mainView
拆分为webView
和mapView
。随着时间的推移,我们添加了功能,并且构建到 API 级别 26 就很好,并且应用程序正在运行。现在 Google 要求至少将 API 级别 28 设为targetSdkVersion
。所以我在cordova项目的config.xml
(当前使用cordova 7.1)中唯一改变的是android-targetSdkVersion
到28。构建cordova build --release android
工作得很好,但是当我在模拟器或电话上运行应用程序时( Android 版本 9),应用程序崩溃。但是使用 API 级别 26 构建,应用程序在两者上都可以正常运行。
插件使用com.google.android.gms.maps.MapView
。相关代码在MapKit.java
文件的showMap
函数中。当我注释掉mapView.onCreate(null)
行时,应用程序不会崩溃,但似乎不再有谷歌地图了。
为什么mapView.onCreate(null)
适用于 API 级别 26,但不适用于 API 级别 28?需要更改哪些内容才能让 Google 地图在 API 级别 28 中运行?
【问题讨论】:
【参考方案1】:在build.gradle中你需要添加这个来支持android 6.0以上的apache
使用图书馆'org.apache.http.legacy'
在 Android Manifest 文件中声明以支持 9.0 以上版本
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
【讨论】:
我将以上是关于mapView.onCreate 在 api 级别 26 的cordova android 应用程序中工作正常,但在 api 级别 28 时崩溃的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上选择 Google API(API 级别 17 或任何其他 API 级别)时,Android 模拟器未加载