栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Flutter amap

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flutter amap

出现原因:信息新规之后,高德被搞了之后更新了高德定位SDK的使用方式,导致最新版编译类出错。
详见官网:
报错内容:
E:flutterflutter.pub-cachehostedpub.flutter-io.cnamap_location-0.2.0androidsrcmainjavacomjzoomamaplocationAmapLocationPlugin.java:227: ����: δ������쳣����Exception; ���������в���������Ա��׳�
locationClient = new AMapLocationClient(getApplicationContext());
^
ע: E:flutterflutter.pub-cachehostedpub.flutter-io.cnamap_location-0.2.0androidsrcmainjavacomjzoomamaplocationAmapLocationPlugin.javaʹ����δ�����⻰�ȫ�IJ�����
ע: �й���ϸ��Ϣ, ��ʹ�� -Xlint:unchecked ���±��롣
1 ������

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ‘:amap_location:compileDebugJavaWithJavac’.

Compilation failed; see the compiler error output for details.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 12s
Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

解决方案:两种解决方案
第一种:

  1. 进入Flutter环境下,找到amap_location依赖,打开路径:【你的flutter安装磁盘】:flutter.pub-cachehostedpub.flutter-io.cnamap_location-0.2.0androidsrcmainjavacomjzoomamaplocation的AmapLocationPlugin.java的文件。
  2. 在private boolean startup(Map arguments)的函数里,初始化AMapLocationClient高德定位服务类之前,加上官方示例的代码
 AMapLocationClient.updatePrivacyShow(getApplicationContext(),true,true);
 AMapLocationClient.updatePrivacyAgree(getApplicationContext(),true);

强制同意授权隐私协议接口。
附上官方说明及完整代码:
高德官方链接:https://lbs.amap.com/api/android-location-sdk/guide/create-project/dev-attention#t1

完整代码:

  private boolean startup(Map arguments) {
        synchronized (this){
        		// 关键的两行代码 兼容最新版本
                AMapLocationClient.updatePrivacyShow(getApplicationContext(),true,true);
                AMapLocationClient.updatePrivacyAgree(getApplicationContext(),true);
                //初始化client
                locationClient = new AMapLocationClient(getApplicationContext());


                //设置定位参数
                AMapLocationClientOption option = new AMapLocationClientOption();
                parseOptions(option,arguments);
                locationClient.setLocationOption(option);

                //将option保存一下
                this.option = option;

                return true;
            }

            return false;
        }
    }

第二种解决方法:指定amap_location依赖的高德地图版本号为5.6.1以下。

  1. 打开amap_location依赖下的build.gradle文件。路径为:【你的flutter安装磁盘】:flutter.pub-cachehostedpub.flutter-io.cnamap_location-0.2.0android
  2. 修改高德定位SDK版本号为5.6.1以下即可。

修改前:

dependencies {
    implementation 'com.amap.api:location:latest.integration'
}

修改后:

dependencies {
    implementation  'com.amap.api:location:4.7.0'
}

然后清除编译缓存,重新编译即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530732.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号