定位 API 28 更新
Targetting API 28 update
我有几个目标为 SDK 26
的应用程序,众所周知,自从 google 为 Play 商店 SDK
要求应用了新规则后,我必须更新我的目标 SDK
到28里面涉及到很多更新!
我最近几天尝试进行更新,但遇到了很多错误:
- 支持库冲突
- gradle 冲突
- 第三个库冲突
所以我将所有内容都设置回目标 API 26
,以便在更新到目标 API 28
之前对应用程序进行一些更改。
我的问题:最好的方法/预期和最好的 android 工作室版本是什么,我必须使用它来避免此类冲突。
在遇到问题中提到的几个问题后,我成功地将我的项目 targetSdkVersion
和 compileSdkVersion
更新为 28
,在这里我将写下我遵循的所有步骤以及我所做的改变。
- 我 - 步骤:
1 - 将我的 android 工作室更新到最新版本
2 - 更新我的 gradle 插件版本,gradle 版本 (5.4.1)
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
.........
}
3 - 迁移到 androidx
库
4 - 将所有第 3 个库(Firebase、google 播放服务、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 - 在项目中添加 google()
存储库 gradle
repositories {
jcenter()
google()
}
allprojects {
repositories {
jcenter()
mavenCentral()
maven {
url 'https://maven.google.com'
}
google()
}
}
7 - 在应用 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 - 小部件属性弃用
如上所述,一些小部件可能与之前完成的更新有关,因此请务必检查您的布局是否已弃用或出现问题
注意:
如果这里有什么需要注意或补充的,那就太好了。希望它能在将来帮助其他人。
我有几个目标为 SDK 26
的应用程序,众所周知,自从 google 为 Play 商店 SDK
要求应用了新规则后,我必须更新我的目标 SDK
到28里面涉及到很多更新!
我最近几天尝试进行更新,但遇到了很多错误:
- 支持库冲突
- gradle 冲突
- 第三个库冲突
所以我将所有内容都设置回目标 API 26
,以便在更新到目标 API 28
之前对应用程序进行一些更改。
我的问题:最好的方法/预期和最好的 android 工作室版本是什么,我必须使用它来避免此类冲突。
在遇到问题中提到的几个问题后,我成功地将我的项目 targetSdkVersion
和 compileSdkVersion
更新为 28
,在这里我将写下我遵循的所有步骤以及我所做的改变。
- 我 - 步骤:
1 - 将我的 android 工作室更新到最新版本
2 - 更新我的 gradle 插件版本,gradle 版本 (5.4.1)
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
.........
}
3 - 迁移到 androidx
库
4 - 将所有第 3 个库(Firebase、google 播放服务、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 - 在项目中添加 google()
存储库 gradle
repositories {
jcenter()
google()
}
allprojects {
repositories {
jcenter()
mavenCentral()
maven {
url 'https://maven.google.com'
}
google()
}
}
7 - 在应用 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 - 小部件属性弃用
如上所述,一些小部件可能与之前完成的更新有关,因此请务必检查您的布局是否已弃用或出现问题
注意:
如果这里有什么需要注意或补充的,那就太好了。希望它能在将来帮助其他人。