升级到Android 10和gradle升级

gradle升级到3.5.2

build tools gradle 版本升级到 3.5.2
—— gradle最低版本是 5.4.1 https://services.gradle.org/distributions/gradle-5.4.1-all.zip

Plugin versionRequired Gradle version
1.0.0 - 1.1.32.2.1 - 2.3
1.2.0 - 1.3.12.2.1 - 2.9
1.5.02.2.1 - 2.13
2.0.0 - 2.1.22.10 - 2.13
2.1.3 - 2.2.32.14.1+
2.3.0+3.3+
3.0.0+4.1+
3.1.0+4.4+
3.2.0 - 3.2.14.6+
3.3.0 - 3.3.24.10.1+
3.4.0 - 3.4.15.1.1+
3.5.0+5.4.1-5.6.4

参考文献:
https://developer.android.google.cn/studio/releases/gradle-plugin?hl=en#updating-gradle

遇到的问题:

1、 cannot generate view binders java.lang.StackOverflowError at
android.databinding.tool.expr.Expr.resolveListeners(Expr.java:209)
at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)

stackoverflow:
  	https://stackoverflow.com/questions/58763363/when-building-android-project-with-android-gradle-plugin-v-3-5-2-my-builds-fail

解决方法:
	去除xml文件中databing熟悉的get()方法,如在xml中定义了一个ObservableBoolean flag,不要使用flag.get()

2、INFO: DSL element 'useProguard' is obsolete and will be removed soon. Use 'android.enableR8' in gradle.properties to switch between R8 and Proguard..

android sdk版本升级

compileSdkVersion 	28 -> 29
targetSdkVersion  	26 -> 29
buildToolsVersion 	28.0.3 -> 29.0.2
  • 升级到android 9(28)需要注意点
    官方api:Android 9变更

    • Apache HTTP 客户端弃用:从 Android 9 开始,该内容库已从 bootclasspath 中移除,且默认情况下应用无法使用它。要继续使用 Apache HTTP 客户端,以 Android 9 及更高版本为目标平台的应用可以向其 AndroidManifest.xml 添加以下内容:

      <uses-library android:name="org.apache.http.legacy" android:required="false"/>
      
    • 现在强制执行 FLAG_ACTIVITY_NEW_TASK 要求。在 Android 9 中,您不能从非 Activity 环境中启动 Activity,除非您传递 Intent 标志 FLAG_ACTIVITY_NEW_TASK。 如果您尝试在不传递此标志的情况下启动 Activity,则该 Activity 不会启动,系统会在日志中输出一则消息。
      注:在 Android 7.0(API 级别 24)之前,标志要求一直是期望的行为并被强制执行。 Android 7.0 中的一个错误会临时阻止实施标志要求。

    • 屏幕旋转变更。从 Android 9 开始,对纵向旋转模式做出了重大变更。 在 Android 8.0(API 级别 26)中,用户可以使用 Quicksettings 图块或 Display 设置在自动屏幕旋转和纵向旋转模式之间切换。 纵向模式已重命名为旋转锁定,它会在自动屏幕旋转关闭时启用。 自动屏幕旋转模式没有任何变更。

    幕方向行为
    指定、user在自动屏幕旋转和旋转锁定下,Activity 可以纵向或横向(以及颠倒纵向或横向)呈现。 预期同时支持纵向和横向布局。
    serLandscape在自动屏幕旋转和旋转锁定下,Activity 可以横向或颠倒横向呈现。 预期只支持横向布局。
    serPortrait在自动屏幕旋转和旋转锁定下,Activity 可以纵向或颠倒纵向呈现。 预期只支持纵向布局。
    ullUser在自动屏幕旋转和旋转锁定下,Activity 可以纵向或横向(以及颠倒纵向或横向)呈现。 预期同时支持纵向和横向布局。旋转锁定用户将可选择锁定到颠倒纵向,通常为 180º。
    ensor、fullSensor、sensorPortrait、sensorLandscape忽略旋转锁定模式首选项,视为自动屏幕旋转已启用。 请仅在例外情况下并经过仔细的用户体验考量后再使用此项。
    • 隐私权变更

      • 限制访问通话记录
      • 限制访问电话号码
    • 对使用非 SDK 接口的限制 —— 官方文档介绍
      为帮助确保应用稳定性和兼容性,此平台对某些非 SDK 函数和字段的使用进行了限制;无论您是直接访问这些函数和字段,还是通过反射或 JNI 访问,这些限制均适用。 在 Android 9 中,您的应用可以继续访问这些受限的接口;该平台通过 toast 和日志条目提醒您注意这些接口。 如果您的应用显示这样的 toast,则必须寻求受限接口之外的其他实现策略。 如果您认为没有可行的替代策略,您可以提交错误以请求重新考虑此限制。

    黑名单中的非 SDK 接口

    Dalvik 指令引用某个字段
    alvik 指令引用某个方法
    过 Class.getDeclaredField() 或 Class.getField() 进行反射
    过 Class.getDeclaredMethod()、Class.getMethod() 进行反射
    过 Class.getDeclaredFields()、Class.getFields() 进行反射
    过 Class.getDeclaredMethods()、Class.getMethods() 进行反射
    过 env->GetFieldID() 进行 JNI 调用
    过 env->GetMethodID() 进行 JNI 调用
  1. 升级到android 10(29)

    • 对使用非 SDK 接口的限制进行了更新
    • 针对全屏 Intent 的权限变更
    • 支持可折叠设备
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ronindong

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值