美文网首页
安卓run keystore缺失问题

安卓run keystore缺失问题

作者: 辣条少年J | 来源:发表于2019-11-28 16:37 被阅读0次

      前段时间集成高德地图需求,网上有位大神根据uikitview和PlatformView原理开发了高德插件,ios安卓都可以使用,插件地址:https://github.com/fluttify-project/amap_map_fluttify
。研究了很久,最大的问题是按照高德的官方文档集成后安卓始终无法定位,ios可以。现在来详细说说安卓的集成。

如何集成:
在pubspec.yaml里添加amap_map_fluttify: ^x.x.x(这里要选择适配当前dart sdk和其他第三方库的版本,否则会有冲突)这个库并且packages get.然后根据高德官方文档上讲解的将它的debug和release里的Keystore的sha1添加到新增的key里,将它的包名写到配置里。如下图按照文档里说的填写就可。

image.png

      但是我这边操作的时候遇到问题,由于对安卓不是特别熟悉,不知道如何获取这个sha1,网上找的操作只是将.android里的keystore的sha1获取到,.anroid是安卓配置地址,生成命令:

keytool -v -list -keystore .android/debug.keystore

    这是获取调试证书的sha1,使用android studio调试的时候默认是使用这个证书
。经过一番查询和咨询安卓开发人士了解到需要自己创建jks的keystore,直接可以通过android studio的generate apk这个操作生成,


image.png

生成的都是jks文件,保存在本地
生成后使用keytool命令获取这个jks的sha1,依旧是使用keytool命令

keytool -v -list -keystore xx.jks

也可以手动生成调试证书,在gradle配置文件里不同模式设置响应的证书即可。

    signingConfigs {
        release {
            storeFile file('./xxx.jks')
            storePassword 'android'
            keyAlias = 'key0'
            keyPassword 'androidkey'
        }
        debug {
            storeFile file('./xxx.jks')
            storePassword 'android'
            keyAlias = 'key0'
            keyPassword 'androidkey'
        }
    }

release和debug都可以设置同样的证书。
默认使用release证书:

defaultConfig {
signingConfig signingConfigs.release
}

      其实困扰我很久的问题就是这个密钥库的sha1获取,脑袋始终没有转过弯,因为开始看网上的教程发现如果这样是生成keystore的话那么这个keystore不是跟包名就没关系了么,开始我的理解一直是这个生成的keystore应该是跟包名相关的,这样才可以根据校验到这个keystore和包名相关,所以很久没有理解到这个。

      此时我发现集成到自己的项目里还是不能定位,但是在插件的example里就可以,在自己的项目里就java各种报错,比如说系统api或者高德地图api过时等问题,后面对比了两边项目以后发现可能是我引用的amap_map_fluttify的插件版本比较高,使用的是0.6.x的插件,应该是这个版本使用的安卓sdk版本较高,原生地图的java代码使用的是较低版本的sdk导致报错(具体原因也不清楚,希望有了解的朋友可以留言)。我切换回amap_map_fluttify: ^0.5.2+d62f0ad就可以了,本地的sdk版本是安卓10.0。
      若有不正确的,欢迎各位指正,谢谢。

相关文章

网友评论

      本文标题:安卓run keystore缺失问题

      本文链接:https://www.haomeiwen.com/subject/koubwctx.html