2***@qq.com
2***@qq.com
  • 发布:2023-07-11 15:42
  • 更新:2023-07-11 15:53
  • 阅读:418

【报Bug】使用官方示例项目离线打包 获取gcj02类型位置信息失败

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 3.8.4

手机系统: Android

手机系统版本号: Android 11

手机厂商: 华为

手机机型: 红米note8p

页面类型: vue

vue版本: vue2

打包方式: 离线

项目创建方式: HBuilderX

示例代码:
apply plugin: 'com.android.application'  

android {  
    compileSdkVersion 33  
    buildToolsVersion '30.0.3'  
    defaultConfig {  
        applicationId "com.git.plugin"  
        minSdkVersion 21  
        targetSdkVersion 33 //建议此属性值设为21 io.dcloud.PandoraEntry 作为apk入口时   必须设置 targetSDKVersion>=21 沉浸式才生效  

        versionCode 1  
        versionName "1.0"  
        multiDexEnabled true  
        ndk {  
            abiFilters 'x86','armeabi-v7a'  
        }  
        compileOptions {  
            sourceCompatibility JavaVersion.VERSION_1_8  
            targetCompatibility JavaVersion.VERSION_1_8  
        }  
    }  

    signingConfigs {  
        config {  
            keyAlias '__uni__2e20059'  
            keyPassword 'MkW8jfiM'  
            storeFile file('5e010424057992b50beee4f1cf6e2571.keystore')  
            storePassword 'MkW8jfiM'  
            v1SigningEnabled true  
            v2SigningEnabled true  
        }  
    }  

    buildTypes {  
        release {  
            signingConfig signingConfigs.config  
            zipAlignEnabled true  
            minifyEnabled true  
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
        }  
        debug {  
            signingConfig signingConfigs.config  
            zipAlignEnabled true  
            minifyEnabled true  
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
        }  
    }  
    //使用uniapp时,需复制下面代码  
    /*代码开始*/  
    aaptOptions {  
        additionalParameters '--auto-add-overlay'  
        //noCompress 'foo', 'bar'  
        ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"  
    }  
    /*代码结束*/  
}  
repositories {  
    flatDir {  
        dirs 'libs'  
    }  
}  
dependencies {  
    implementation fileTree(dir: 'libs', include: ['*.jar'])  
    implementation fileTree(dir: 'libs', include: ['*.aar'])  

    implementation 'androidx.legacy:legacy-support-v4:1.0.0'  
    implementation 'androidx.appcompat:appcompat:1.0.0'  

    /*uniapp所需库-----------------------开始*/  
    implementation 'androidx.recyclerview:recyclerview:1.0.0'  
    implementation 'com.facebook.fresco:fresco:1.13.0'  
    implementation "com.facebook.fresco:animated-gif:1.13.0"  
    /*uniapp所需库-----------------------结束*/  
    // 基座需要,必须添加  
    implementation 'com.github.bumptech.glide:glide:4.9.0'  
    implementation 'com.alibaba:fastjson:1.2.83'  
    implementation 'androidx.webkit:webkit:1.3.0'  

    // 添加uni-app插件  
    implementation project(':uniplugin_component')  
    implementation project(':uniplugin_module')  
    implementation project(':uniplugin_richalert')  

//  
//    implementation 'com.amap.api:3dmap:9.5.0'  
//    implementation 'com.amap.api:search:9.4.5'  
}  
<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    package="com.git.plugin">  

    <supports-screens  
        android:anyDensity="true"  
        android:largeScreens="true"  
        android:normalScreens="true"  
        android:resizeable="true"  
        android:smallScreens="true" />  

    <!-- Barcode(二维码)  begin -->  
    <uses-permission android:name="android.permission.CAMERA" />  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

    <uses-feature android:name="android.hardware.camera" />  
    <uses-feature android:name="android.hardware.camera.autofocus" />  

    <uses-permission android:name="android.permission.VIBRATE" />  
    <uses-permission android:name="android.permission.FLASHLIGHT" />  
    <!-- Barcode(二维码)  end -->  

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  
    <uses-permission android:name="android.permission.INTERNET" />  
    <uses-permission android:name="android.permission.VIBRATE" />  
    <uses-permission android:name="android.permission.FLASHLIGHT" />  
    <uses-permission android:name="android.permission.CALL_PHONE" />  
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
    <uses-permission android:name="android.permission.WAKE_LOCK" />  
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />  
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>  
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>  
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>  
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  
    <uses-permission android:name="android.permission.INTERNET"/>  
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>  
    <uses-permission android:name="android.permission.READ_LOGS"></uses-permission>  
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>  

    <application  
        android:name="io.dcloud.application.DCloudApplication"  
        android:allowClearUserData="true"  
        android:icon="@drawable/icon"  
        android:label="@string/app_name"  
        android:largeHeap="true"  
        android:supportsRtl="true">  

        <!-- 应用入口 -->  
        <activity  
            android:name="io.dcloud.PandoraEntry"  
            android:theme="@style/TranslucentTheme"  
            android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale"  
            android:hardwareAccelerated="true"  
            android:windowSoftInputMode="adjustResize">  
            <intent-filter>  
                <data android:scheme="hbuilder"/>  
                <action android:name="android.intent.action.VIEW"/>  

                <category android:name="android.intent.category.DEFAULT"/>  
                <category android:name="android.intent.category.BROWSABLE"/>  
            </intent-filter>  
            <intent-filter>  
                <data android:mimeType="image/*"/>  
                <action android:name="android.intent.action.SEND"/>  
                <category android:name="android.intent.category.DEFAULT"/>  
            </intent-filter>  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN"/>  
                <category android:name="android.intent.category.LAUNCHER"/>  
            </intent-filter>  
        </activity>  
        <meta-data android:name="dcloud_uninview_background"  
            android:value="true"/>  

        <activity  
            android:name="io.dcloud.PandoraEntryActivity"  
            android:launchMode="singleTask"  
            android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard|smallestScreenSize|screenLayout|screenSize|uiMode"  
            android:hardwareAccelerated="true"  
            android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"  
            android:screenOrientation="user"  
            android:theme="@style/DCloudTheme"  
            android:windowSoftInputMode="adjustResize">  

            <intent-filter>  

                <category  
                    android:name="android.intent.category.DEFAULT" />  

                <category  
                    android:name="android.intent.category.BROWSABLE" />  

                <action  
                    android:name="android.intent.action.VIEW" />  

                <data  
                    android:scheme=" " />  
            </intent-filter>  
        </activity>  
        <meta-data  
            android:name="dcloud_appkey"  
            android:value="dfbfe5d406a5af85d0ee9567886713ac" />  
        <meta-data android:name="com.amap.api.v2.apikey" android:value="15b9b143d5c132972ca2316c8d7a0522"/>  
        <service android:name="com.amap.api.location.APSService"></service>  
    </application>  

</manifest>

操作步骤:

新建一个项目调用一下代码

        methods: {  
            getLocation(){  
                //altitude和ishighAccuracy  
                uni.getLocation({  
                    type: 'gcj02',  
                    altitude:true,  
                    geocode: true, //设置该参数为true可直接获取经纬度及城市信息  
                    success: function(res) {  
                        uni.showToast({  
                            title: JSON.stringify(res),  
                            icon: 'none'  
                        });  
                    },  
                    fail: function(res) {  
                        uni.showToast({  
                            title: JSON.stringify(res),  
                            icon: 'none'  
                        });  
                    }  
                })  
            },  
            getLocation2(){  
                //altitude和ishighAccuracy  
                uni.getLocation({  
                    type: 'wgs84',  
                    altitude:true,  
                    geocode: true, //设置该参数为true可直接获取经纬度及城市信息  
                    success: function(res) {  
                        uni.showToast({  
                            title: JSON.stringify(res),  
                            icon: 'none'  
                        });  
                    },  
                    fail: function(res) {  
                        uni.showToast({  
                            title: JSON.stringify(res),  
                            icon: 'none'  
                        });  
                    }  
                })  
            }  
        }  
    }  

预期结果:

成功返回位置信息

实际结果:

{“errMsg”:"getLocation:fail not support gcj02","errCode":18,“code”:18}

bug描述:

获取位置报错 type:gcj02

按照官方文档提供的示例工程配置离线打包项目

2023-07-11 15:42 负责人:无 分享
已邀请:
Eupotia

Eupotia - 道阻且长,行则将至。

gcj02 时 去掉那个 geocode 配置试试。

之前有看到别人发帖是这样处理的

  • 2***@qq.com (作者)

    这个帖子我也看了,试过不行

    2023-07-11 16:07

  • 2***@qq.com (作者)

    wgs84这个可以获取到

    2023-07-11 16:08

2***@qq.com

2***@qq.com (作者)

高德地图配置的key对比过没有问题

  • 刨地瓜

    build.gradle文件内你把高德的SDK给注释掉了吧

    2023-07-11 15:55

  • 2***@qq.com (作者)

    回复 刨地瓜: 我解开也是一样的

    2023-07-11 15:59

  • 刨地瓜

    回复 2***@qq.com: 高德key最好打码

    2023-07-11 16:00

  • 刨地瓜

    回复 2***@qq.com: 有在lib内添加amap-libs-release.aar文件吗

    2023-07-11 16:03

  • 2***@qq.com (作者)

    回复 刨地瓜: 引用了

    2023-07-11 16:06

刨地瓜

刨地瓜

你这是用错离线基座了吧,用的是插件示例基座(UniPlugin-Hello-AS)了。 且要按官方文档里的来引入百度或高德定位模块才能使用gcj02的定位。 https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/map.html

  • 2***@qq.com (作者)

    我在uniapp工程里面引用了高德定位模块了

    2023-07-11 16:00

  • 2***@qq.com (作者)

    {  
    "name" : "test-map",
    "appid" : "__UNI__2E20059",
    "description" : "",
    "versionName" : "1.0.0",
    "versionCode" : "100",
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
    "usingComponents" : true,
    "nvueStyleCompiler" : "uni-app",
    "compilerVersion" : 3,
    "splashscreen" : {
    "alwaysShowBeforeRender" : true,
    "waiting" : true,
    "autoclose" : true,
    "delay" : 0
    },
    /* 模块配置 */
    "modules" : {
    "Maps" : {}
    },
    /* 应用发布信息 */
    "distribute" : {
    /* android打包配置 */
    "android" : {
    "permissions" : [
    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
    "<uses-feature android:name=\"android.hardware.camera\"/>",
    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
    ]
    },
    /* ios打包配置 */
    "ios" : {},
    /* SDK配置 */
    "sdkConfigs" : {
    "maps" : {
    "amap" : {
    "appkey_ios" : "15b9b143d5c132972ca2316c8d7a0522",
    "appkey_android" : "15b9b143d5c132972ca2316c8d7a0522"
    }
    }
    }
    }
    },
    /* 快应用特有相关 */
    "quickapp" : {},
    /* 小程序特有相关 */
    "mp-weixin" : {
    "appid" : "",
    "setting" : {
    "urlCheck" : false
    },
    "usingComponents" : true
    },
    "mp-alipay" : {
    "usingComponents" : true
    },
    "mp-baidu" : {
    "usingComponents" : true
    },
    "mp-toutiao" : {
    "usingComponents" : true
    },
    "uniStatistics" : {
    "enable" : false
    },
    "vueVersion" : "2"
    }

    2023-07-11 16:01

  • 刨地瓜

    回复 2***@qq.com: 按官方文档里说,只使用高德定位的话,需要在build.gradle中写implementation('com.amap.api:location:xxx') ,但这个版本号在demo基座中都没提到,我这使用的基座版本跟你相同,是直接按高德地图的方式来配置的(能直接使用定位)

    2023-07-11 16:07

  • 刨地瓜

    回复 2***@qq.com: 不要把代码直接贴上来,一些key都让人知道了

    2023-07-11 16:10

  • 2***@qq.com (作者)

    回复 刨地瓜: 好的谢谢提醒

    2023-07-11 16:11

  • 2***@qq.com (作者)

    回复 刨地瓜: com.amap.api:location 这个依赖用的什么版本呀

    2023-07-11 16:12

  • 刨地瓜

    回复 2***@qq.com: 就是官方基座里都没明确这个版本号, 我这是直接引入的高德地图,而不是高德定位。 你写个9.4.5试试?如果版本不正确,基座运行会报错的

    2023-07-11 16:21

  • 刨地瓜

    回复 刨地瓜: 不行试试6.1.0

    2023-07-11 16:25

  • 2***@qq.com (作者)

    回复 刨地瓜: implementation ('com.amap.api:location:9.4.5') 版本不对报错了

    implementation ('com.amap.api:location:latest.integration') 用这个版本倒是不报错,但是还获取不到地图

    2023-07-11 16:28

  • 刨地瓜

    回复 2***@qq.com: 要获取地图的话,要按高德地图模块的方式来引入,而不能只引入高德定位模块

    2023-07-11 16:31

  • 2***@qq.com (作者)

    回复 刨地瓜: 我需要拿到这个类型接口返回的 位置的中文信息 省份、城市、街道等

    uni.getLocation({

    type: 'gcj02',

    altitude:true,

    // geocode: true, //设置该参数为true可直接获取经纬度及城市信息

    success: function(res) {

    uni.showToast({

    title: JSON.stringify(res),

    icon: 'none'

    });

    },

    fail: function(res) {

    uni.showToast({

    title: JSON.stringify(res),

    icon: 'none'

    });

    }

    })

    2023-07-11 16:35

  • 刨地瓜

    回复 2***@qq.com: 那你把geocode: true取消注释呀

    2023-07-11 16:41

  • 2***@qq.com (作者)

    回复 刨地瓜: 我用官方提供的HBuilder-HelloUniApp项目 做修改添加配置就可以了,现在还没找到我原先项目代码为什么不行,一会找到问题我发出来

    2023-07-11 16:49

  • 刨地瓜

    回复 2***@qq.com: 好

    2023-07-11 17:10

  • 2***@qq.com (作者)

    回复 刨地瓜: 少了个依赖包geolocation-amap-release.aar 官方文档上面也没说要配这个

    2023-07-12 15:10

  • 刨地瓜

    回复 2***@qq.com: 这个是在高德定位的配置里的,且官方文档有提到这个“3.7.6开始不再提供"amap-libs-release.aar"文件 改为gradle集成!geolocation-amap-release.aar还需要继续添加到项目中”

    2023-07-12 16:14

要回复问题请先登录注册