为什么要升级?
Android手机系统近两年更新很快,特别是现在大多数的设备已经升级到了9.0甚至是10.0

升级
- project的build文件修改
只将classpath修改为了3.1.4,有需要的话可以根据需求往上升级
1 | classpath 'com.android.tools.build:gradle:3.1.4' |
- 修改gradle-wrapper.properties文件
修改了classpath需要同步修改这个,目前我只改到了4.4
1 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip |
- module的build文件修改
android节点下修改
1 | compileSdkVersion 28 |
defaultConfig节点下修改
1 | minSdkVersion 21 |
修改apk的输出名称,先前是这么用的,但是在升级后会出现下面的错误
1 | Cannot set the value of read-only property 'outputFile' for XXX |
1 | applicationVariants.all { variant -> |
现在需要改成这样
1 | applicationVariants.all { variant -> |
如果你配置了渠道分包
会出现这样的错误
1 | Error:All flavors must now belong to a named flavor dimension. |
官方给出的解释是需要配置flavorDimensions
1 | flavorDimensions "version" |
添加两行就好了
如果你使用了HTTP client,会出现这样的错误
1 | Didn't find class "org.apache.http.impl.client.DefaultHttpClient" on path |
需要在manifest的application标签中增加属性
1 | <uses-library android:name="org.apache.http.legacy" android:required="false" /> |
为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo 则不受影响.
默认联网会失败,解决办法一是降级27,这里我们不采用.第二种如下:
首先在res文件夹下创建一个xml文件夹,然后创建一个network_security_config.xml文件,文件内容如下:
1 |
|
接着,在AndroidManifest.xml文件下的application标签增加以下属性:
1 | <application |
最后还有最简单的办法,在AndroidManifest.xml配置文件的
1 | android:usesCleartextTraffic="true" |
- 最后记得动态权限控制