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系列之浅谈Android(安卓)3D旋转
  4. Android禁止横屏竖屏切换
  5. 登录时旋转等待效果
  6. Android预定义样式
  7. Android预定义样式
  8. android实现上下滑动
  9. Android图片旋转实例

随机推荐

  1. Unable to execute dex: Multiple dex fi
  2. android scrollview组件禁止滑动的方法
  3. 图片的ScaleType详解 ImageView的属性and
  4. android随意记
  5. Android(安卓)onSaveInstanceState和onRe
  6. Android客户端登录会话保持现实的文章汇
  7. android light
  8. [Android]libpng的编译与使用
  9. Android启动画面实现
  10. Android(安卓)禁止下拉状态栏和底部导航