最近遇到的问题

问题记录

databinding使用问题

  1. 绑定点击事件需要在方法中传入view
  2. 在recycleview中使用viewmodel绑定试图需要添加holder?.itemThemeBinding.executePendingBindings()来解决列表滑动闪烁问题
  3. 设置颜色需要在代码中添加pasercolor方法,将id转成color值再传入
  4. 二元表达式@{itemThemeModel.beanModel.used? @string/used:@string/unused

MVVM使用
1.

协程使用
1.

热跟新Robust

  1. 打apk的时候放开apply plugin: ‘robust’,打补丁的时候放开apply plugin: ‘auto-patch-plugin’
  2. 需要在打完apk后将build/outputs/robust/methodsMap.robust,build/outputs/mapping/mapping.txt两个文件放到app目录下robust文件夹下
  3. 修改完bug后打补丁放开apply plugin: ‘auto-patch-plugin’,并且执行 正式打包命令如assembleRelease
  4. 添加完依赖后需要在app目录下添加robust.xml文件,并且修改里面的包名
  5. 需要注意修改PatchMainpulateImpl中的报名
  6. 使用classpath “com.android.tools.build:gradle:4.0.2” 替换 classpath “com.android.tools.build:gradle:4.1.3”
    ,使用 classpath ‘com.effective.android:gradle-plugin-fix:0.4.99.1’ classpath ‘com.effective.android:auto-patch-plugin-fix:0.4.99.1’ 替换
    //classpath ‘com.meituan.robust:gradle-plugin:0.4.99’ //classpath ‘com.meituan.robust:auto-patch-plugin:0.4.99’,
    解决 invalid constant type: 19 at 5 问题

热更新tinker

  1. Tinker目前还不支持Gradle 5.x,需要降低Gradle版本 classpath “com.android.tools.build:gradle:3.5.3”
  2. walle打包降低gradle 版本为3.4.2
  3. 生成补丁包需要修改tinker-support中baseApkDir,为app/build/bakApk下包名
  4. 注意需要匹配tinker的版本号和tinker support的版本号 目前support为1.1.5 tinker-lib为1.9.9。一定不要随意匹配版本号,不然会引起很多不知名的问题
  5. 出现Warning:ignoreWarning is false, but we found loader classes are found in old secondary问题,
    解决方案详见csdn。
    一方面需要增加multiDexKeep.txt文件,并在app下build.gradle中配置,
    另一方面需要在tinker-support.gradle中将tinker_patch下ignoreWarning置为true,如果还不能解决问题再在tinkerSupport中增加ignoreWarning = true
  6. 如果提示混淆有问题,则增加tinker_multidexkeep.pro混淆文件,并在build.gradle下配置
  7. 原来minSdkVersion从26换到了22,为了解决 com.tencent.tinker.android.dex.DexException: Unexpected magic: [100, 101, 120, 10, 48, 51, 56, 0],但是网上有的说不是因为minSSK
  8. 在模拟器上下载成功,但是合并失败了,在真机上下载成功,并且合并成功了

其他

  1. json实体类不能被混淆
  2. 请求log需要添加logging-interceptor-4.0.1.jar,gradle中添加无效
  3. 解决沉浸式状态栏和布局顶部重叠问题简书
    () ImmersionBar.with(this) .titleBar(view) //指定标题栏view .init(); ()
  4. Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 30 错误,需要更新okhttp版本号
  5. mac adb环境变量设置 https://blog.csdn.net/qq_15988951/article/details/84574961
  6. mac 执行gradlew 命令提示没有权限使用chomd -x gradlew获取权限
  7. gradle 判断当前系统环境
    () def isWindow(){ return org.gradle.internal.os.OperatingSystem.current().isWindows() } ()

你可能感兴趣的:(android)