Android 记录一 重新编译选项

Date
Created
Oct 26, 2024 09:17 AM
Descrption
好记性不如烂笔头
Tags
安卓
记录
技术知识
notion image

问题:

我的华为Nova 8 pro为什么每次运行项目到手机的时候,都是旧代码,只有删掉旧应用,重新run一遍上去才是新代码
 
这种情况通常有几个可能的原因:
  1. Android 系统的应用替换机制问题,特别是在一些国产定制系统(如 EMUI)上比较常见。解决方案:
// 在 AndroidManifest.xml 中添加 android:allowBackup="false" <application android:allowBackup="false" ... >
  1. 构建缓存问题,可以尝试以下操作:
      • Build -> Clean Project
      • Build -> Rebuild Project
      • File -> Invalidate Caches / Restart
  1. Android Studio 的设置修改:
      • 在 Run/Debug 配置中启用 "Always install with package manager"
      • Edit Configurations -> Installation Options -> 勾选 "Always install with package manager"
  1. 添加自动卸载选项:
android { adbOptions { installOptions("-r", "-d") } }
  1. 直接在 app/build.gradle.kts 中添加自动卸载的配置:
android { applicationVariants.all { // 强制卸载旧版本 tasks.getByName("install${name.capitalize()}") { doFirst { exec { commandLine = listOf( android.adbExecutable.toString(), "shell", "pm", "uninstall", applicationId ) isIgnoreExitValue = true } } } } }
  1. 可以添加版本号自动递增,这样每次构建都会是新版本:
android { defaultConfig { // ... 其他配置 // 获取 git commit 数量作为版本号 val commitCount = "git rev-list --count HEAD".execute().trim().toInt() versionCode = commitCount versionName = "1.0.$commitCount" } } // 添加执行命令的扩展函数 fun String.execute(): String { val process = Runtime.getRuntime().exec(this) return process.inputStream.bufferedReader().readText() }
这些方法你可以逐个尝试,看哪个能解决你的问题。最稳妥的方法是在运行前:
  1. 先卸载应用
  1. Clean Project
  1. Rebuild Project
  1. 重新运行
但这样比较麻烦,你可以尝试上面的自动化方案。