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 version Required Gradle version
1.0.0 - 1.1.3 2.2.1 - 2.3
1.2.0 - 1.3.1 2.2.1 - 2.9
1.5.0 2.2.1 - 2.13
2.0.0 - 2.1.2 2.10 - 2.13
2.1.3 - 2.2.3 2.14.1+
2.3.0+ 3.3+
3.0.0+ 4.1+
3.1.0+ 4.4+
3.2.0 - 3.2.1 4.6+
3.3.0 - 3.3.2 4.10.1+
3.4.0 - 3.4.1 5.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 -> 29targetSdkVersion  26 -> 29buildToolsVersion 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. Android常用屏幕适配方式
  2. 头条Android 屏幕适配
  3. android如何处理不同屏幕的适配
  4. android:初级 [Android] Eclipse Android中设置模拟器屏幕大小几
  5. android字体大小多屏幕适配
  6. Android 如何在屏幕切换的时候页面信息不被重置
  7. Android处理屏幕旋转时的解决方案

随机推荐

  1. Android设置通知栏/状态栏透明改变通知栏
  2. Android(安卓)的 supportdesign
  3. Android(安卓)流式布局FlowLayout(搜索历
  4. Android的Handler机制详解3_Looper.loope
  5. Android四大组件的理解
  6. 【Android(安卓)开发教程】Toast通知
  7. GitHub 优秀的 Android(安卓)开源项目
  8. opengrok setup on ubuntu for android s
  9. Android(安卓)闹钟管理类的使用
  10. Android(安卓)P SystemUI之StatusBar UI