Android 天气APP(三十七)新版AS编译、更新镜像源、仓库源、修复部分BUG

上一篇:Android 天气APP(三十六)运行到本地AS、更新项目版本依赖、去掉ButterKnife

新版AS编译、更新镜像源、仓库源、修复部分BUG

前言

  没想到我还会更新这个天气App的文章,起因是因为有读者运行源码后报错,然后上网找不到解决的办法,于是找到我,鉴于此,我写下原因和解决方法。

正文

  先说一下过程,这个项目我从2020年开始陆陆续续更新,最开始我使用的是Android Studio 3.5.2版本,随后有更新到Android Studio 4.0.1和4.2.1,随着AS的改动,对于项目本身来说一些依赖库就无法使用了,但是在之前的AS版本中是可以的。

  举个例子,就拿jcenter()来说,最开始这个仓库是AS中默认就有了,随着AS版本更新先是不推荐你使用这个仓库,改用mavenCentral(),但此时这个仓库里面的依赖库还能用,去年的时候,我的项目还是可以正常跑起来的,但今时不同往日,现在不行了,因为AS又更新了好多版本,现在这个仓库用不了了。

一、更新镜像源

  首先我们更新一下项目的镜像源,默认是使用Google的源,但是由于国内访问不太稳定,会造成你下载很慢、异常、超时等等问题,烦不胜烦,因此我们可以改成国内的镜像源,常用的就是阿里、腾讯的源。

这里我们打开项目的gradle-wrapper.properties看看。

① 腾讯源

下面我们来更换腾讯源,代码如下:

groovy 复制代码
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.5-all.zip

实际上我们就是从

java 复制代码
services.gradle.org/distributions

改成了

java 复制代码
mirrors.cloud.tencent.com/gradle

③ 阿里源

java 复制代码
distributionUrl=https\://mirrors.aliyun.com/macports/distfiles/gradle/gradle-7.5-all.zip

实际上我们就是从

java 复制代码
services.gradle.org/distributions

改成了

java 复制代码
mirrors.aliyun.com/macports/distfiles/gradle

改完之后Sync Now即可,两者选一个就好了。

二、更新仓库源

下面我们运行一下看看,报什么错,根据具体的错误去解决问题。

从上诉错误来看有四个库的依赖出了问题,这几个库的作用分别是权限、刷新、数据库,实际上是3个,因为这个下拉刷新实际上是可以一起改的。本身的原因就是jcenter()仓库下的依赖库访问不了了,那么最简单的办法就是将jcenter()替换为国内的仓库源。

打开项目的build.gradle,找到jcenter(),修改为如下代码:

groovy 复制代码
	maven { url 'https://maven.aliyun.com/repository/public' }

修改后如下图所示:

这里我将google()和mavenCentral()也注释掉了,对应的我添加了

groovy 复制代码
	maven { url 'https://maven.aliyun.com/repository/google' }

  这个就看你自己要不要替换了,需要注意的是,国内的库并不是实时同步国外的库的,所以,你可以不注释google()和mavenCentral(),同时更新一些库的版本,改动后记得Sync Now同步一下即可。

三、修复城市重名BUG

  由于部分城市存在同名的情况,所以我们最好在请求城市搜索API的时候,最好带上城市,举一个例子,如果你当前定位在深圳南山,按照我们之前逻辑直接搜索南山的话,你会发现第一个出现的值不是深圳市南山区,而是黑龙江鹤岗南山,如下图所示:

  然后就有读者问我,不对啊,我定位在南山,为什么温度这么低啊,我当时就解释了,但是他有没有理解我不清楚,所以借着这个更新的机会,就顺便解决了,这里我们就该这个定位返回的地方,如果还有别的地方出现这样的情况,你可以再去更改,在MainActivity中改动如下图所示:

MapWeatherActivity中改动如下所示:

运行一下看看

非常好,我的代码还是照样运行,只不过我不会再把Key放在项目里面了,因为读者都用我的Key访问,导致和风认为我账号恶意访问,就封了我的和风账号,现在都没有解封。所以我又注册了一个账号,申请了新的Key才能够访问API,说多了都是泪。

四、地图加载问题

  地图加载问题,这个问题是什么意思呢?就是读者在运行项目的时候,天气API配置好了,于是进入地图页面,发现页面一直在加载中,然后就问我为什么?这个问题我之前就说过了原因,这是因为百度地图的SDK在创建应用的时候需要配置三个信息:发布版SHA1、调试版SHA1和包名。那么如果我们在当前本地运行的时候用的就是调试版SHA1,而我的调试版SHA1毫无疑问在我的百度地图开放平台上配置了,你又没配置,所以你访问不了,所以你看看控制台是不是会有这种类似的错误,如下图所示:

不出意外是有的,那么解决方式我之前也说过,有两种方式,第一种就是从新在你的SDK平台上配置一下,第二种方式就是我们通过创建一个jks,然后将调试和发布都改成使用这个jks即可,在app模块下的build.gradle中添加如下代码:

groovy 复制代码
    signingConfigs {
        release {
            storeFile file('../weather.jks')
            storePassword '123456'
            keyAlias 'weather'
            keyPassword '123456'
        }
        debug {
            storeFile file('../weather.jks')
            storePassword '123456'
            keyAlias 'weather'
            keyPassword '123456'
        }
    }
groovy 复制代码
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.release
        }
    }

添加位置如下图所示:

  改完记得Sync Now,通过jks去获取发布版SHA1值,然后通过上面的配置让我们debug的时候也是用发布版的jks,再回到百度开放平台,将开发版SHA1改成和发布版SHA1一样即可,如下图所示:

下面在运行,进入地图页面就会一直加载了,控制台也不会出现那个错误信息,我上面说的你最好自己在自己的平台上能配置一下,而不是拿着我的代码就跑,跑不起来就来问,先想想自己的原因。

五、源码

源码地址:GoodWeather

最新APK下载:GoodWeather3.0.apk

欢迎 Star 和 Fork

相关推荐
三少爷的鞋1 小时前
现代 Android 架构指南:不要再主动设计 Callback 接口
android
TimeFine7 小时前
AI 编码工作流的设计
android·ai编程
骑着蜗牛撵大象3277 小时前
C++20 协程 × 屏障:手写一个 co_await 版 Barrier,让等待不再钉死线程
android·c++20·协程·并发编程·co_await·屏障同步
山东孙燕姿9 小时前
设备台账重构:从一张表到三层模型
android·java·网络·低代码·重构·rxjava
蒸鱼Yuzheng10 小时前
移动端 CPU 调度分析:线程亲和性、大小核迁移与卡顿
android·perfetto·性能分析·线程优化·cpu调度
booboosui10 小时前
安卓唤醒词:12 维 MFCC 加 DTW,阈值 1.8
android
传奇开心果10 小时前
Compose Multiplatform 共享边界实战:架构契约、互操作同步与可回退设计
android·kotlin
事圆则缓10 小时前
从开机到首帧:Android 系统与应用启动流程源码分析
android
AI吃大瓜11 小时前
指针压力表读数4:Android实现指针压力表读数(可实时检测)
android·指针读数·指针压力表·压力表·压力表读数
fengci.11 小时前
CTF2刷题记录(困难部分)
android·开发语言·前端·学习·php