【问题标题】:mapView.onCreate works fine in cordova android app with api level 26, but crashes with api level 28mapView.onCreate 在 api 级别 26 的cordova android 应用程序中工作正常,但在 api 级别 28 时崩溃
【发布时间】:2021-05-12 22:19:16
【问题描述】:

我有一个使用 mapkit 插件的 7 岁的 Cordova Android 应用程序。该插件将mainView 拆分为webViewmapView。随着时间的推移,我们添加了功能,并且构建到 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 中运行?

【问题讨论】:

    标签: android cordova gmsmapview android-api-levels


    【解决方案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"/>
    

    【讨论】:

    • 我将 添加到了 Android Manifest 文件中,现在它又可以工作了,非常感谢。虽然不必更改 build.gradle(并且不知道在哪里添加“useLibrary ...”)。怎么会知道呢,太好了,再次感谢。
    • 如果我的回答对您有帮助,请将其标记为正确
    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    相关资源
    最近更新 更多