You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android 9(API 28)谷歌地图启动崩溃:找不到org.apache.http.ProtocolVersion类

解决WinDev Mobile地图应用启动崩溃(找不到org.apache.http.ProtocolVersion)的可行方案

我之前也帮开发者处理过类似WinDev Mobile搭配Google Maps的崩溃问题,结合你已经做的配置(加了legacy库、API28开发、谷歌密钥正确),给你几个针对性的解决方向,按顺序尝试:

  • 确认<uses-library>标签的位置是否正确
    这是最容易踩坑的点!你添加的<uses-library android:name="org.apache.http.legacy" android:required="false" />必须嵌套在<application>标签内部,而不是Manifest的根节点下。正确的Manifest结构应该是这样:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="你的应用包名">
        <!-- 其他根节点下的配置,比如uses-permission等 -->
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name">
            <!-- 必须放在application内部 -->
            <uses-library android:name="org.apache.http.legacy" android:required="false" />
            <!-- 你的Activity、Google Maps相关meta-data等配置 -->
        </application>
    </manifest>
    

    很多开发者会误把这个标签放在根节点,导致系统无法识别,自然起不到兼容作用。

  • 开启WinDev Mobile的Apache HTTP兼容开关
    WinDev的编译流程有自己的封装,可能需要手动开启兼容选项:
    打开你的项目,依次进入项目设置 -> Android平台 -> 编译选项,查找是否有“启用Apache HTTP Legacy兼容”或类似描述的选项,勾选它。部分WinDev版本默认不会自动开启这个,需要手动触发才能让编译时正确引入兼容库。

  • 清理项目缓存并重新编译
    有时候WinDev的编译缓存会导致配置修改不生效:

    1. 点击顶部菜单栏的项目 -> 清理,清理项目缓存;
    2. 找到项目目录下的Android编译输出文件夹(一般是项目根目录\Android\Bin),手动删除整个文件夹;
    3. 重新编译并部署到设备,确保新的配置被正确打包。
  • 自定义Gradle配置强制引入兼容库
    如果上面的方法都无效,且你的WinDev版本支持自定义Gradle脚本,可以尝试在项目的build.gradle文件中添加以下配置:

    android {
        useLibrary 'org.apache.http.legacy'
    }
    

    这会强制Android编译工具引入Apache HTTP的legacy库,覆盖可能的配置遗漏。

  • 检查Google Maps依赖版本兼容性
    确认你使用的Google Play Services Maps版本与API28适配,建议选择com.google.android.gms:play-services-maps:17.0.0(这个版本完美支持API28),避免使用过旧或过新的版本引发额外的兼容性冲突。

内容的提问来源于stack exchange,提问作者joproteck

火山引擎 最新活动