定位 API 28 更新

Posted

技术标签:

【中文标题】定位 API 28 更新【英文标题】:Targetting API 28 update 【发布时间】:2020-02-22 16:32:56 【问题描述】:

我有几个目标为SDK 26 的应用程序,众所周知,自从谷歌对Play 商店SDK 要求应用了新规则后,我必须将我的目标SDK 更新为28,这涉及到很多更新!

我最近几天尝试进行更新,但遇到了很多错误:

支持库冲突 分级冲突 第三个库冲突

所以我将一切都设置回目标API 26 以在应用程序上进行一些更改,然后确定更新为目标API 28

我的问题:为了避免此类冲突,我必须使用的最佳方法/预期和最佳 android studio 版本是什么。

【问题讨论】:

最新工作室(来自稳定频道)将尝试为您更新库并升级到最新版本。我想如果您的项目仍然依赖于android.support 库并且尚未迁移到androidx,那么您可能遇到的最大问题。如果您有任何特定的冲突阻止您成功构建并且没有找到关于如何更新的现有答案,那么您可以明确发布它,因为现在这个问题非常模糊。 【参考方案1】:

在遇到问题中提到的几个问题后,我成功地将我的项目的targetSdkVersioncompileSdkVersion 更新为28,在这里我将写下我遵循的所有步骤以及我所做的更改。

我 - 步骤:

1 - 将我的 android studio 更新到最新版本

2 - 更新我的 gradle 插件版本,gradle 版本 (5.4.1)

dependencies 
    classpath 'com.android.tools.build:gradle:3.5.1'
    .........

3 - 迁移到 androidx

4 - 将所有 3rd 库(Firebase、google play services、Picasso ......)更新到最新版本

implementation 'com.google.firebase:firebase-appindexing:19.0.0'
implementation 'com.google.android.gms:play-services-places:17.0.0'
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.google.android.gms:play-services-auth:17.0.0'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.github.f0ris.sweetalert:library:1.5.1'
implementation 'com.google.firebase:firebase-messaging:20.0.1'
..........
..........

5 - 将google-services插件版本更新到最新版本

  dependencies 
    ........
    classpath 'com.google.gms:google-services:4.3.3'

6 - 在项目 gradle 中添加 google() 存储库

repositories 
    jcenter()
    google()


allprojects 
repositories 
    jcenter()
    mavenCentral()
    maven 
        url 'https://maven.google.com'
    
    google()
 

7 - 在 app gradle 中添加 Java 8 为 compileOption

compileOptions 
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8

II - 更改:

对于更改,它确实取决于您正在使用的小部件和库,但总的来说应该提到一些重要的点:

1.启用对所有类型连接 HTTP 和 HTTPS 的请求

usesCleartextTraffic 添加到AndroidManifest.xml

<application
...
android:usesCleartextTraffic="true"
...>

表明应用是否打算使用明文网络流量,例如明文HTTP。针对API 级别27 或更低级别的应用的默认值为"true"。以API 级别为28 或更高级别的应用默认为"false"

2 - 弃用和方法更改

某些方法将被提及为已弃用甚至未找到,因此请确保检查代码的每一行以更新或重写可疑方法

3 - 小部件属性弃用

如上所述,一些小部件可能与之前完成的更新有关,因此请务必检查您的布局是否有弃用或问题


注意:

如果这里有什么需要注意或添加的,那就太好了。希望它会在未来对其他人有所帮助。

【讨论】:

以上是关于定位 API 28 更新的主要内容,如果未能解决你的问题,请参考以下文章

带有地理围栏的 html5 地理定位 API

新共享、地理定位状态和 API

状态未在地理定位功能中使用 setState 进行更新

Android wifi 和蓝牙扫描定位

iOS小技能:封装定位SDK,统一数据模型和错误处理。

PHP利用百度地图API进行IP定位和GPS定位