张松献图——正确打开旧安卓工程步骤

1,172 阅读2分钟

最近在学习第一行代码,IED 是当前最新版,找的 demo 工程是 22 年的,与当前 android 版本差异较大,在打开项目时候不能直接开箱即用,根据规律记录了一些插件升级步骤,希望可以帮助到需要打开旧工程的开发朋友

打开旧项目

版本相关信息

IDE 软件版本

image.png

项目版本信息

distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
ext.kotlin_version = '1.3.72'
classpath 'com.android.tools.build:gradle:3.6.3

配置步骤

必读:

需要先更新项目跟路径中 build.gradle 文件,properties 文件 gradle 相关版本,然后更新 app 路径中 build.gradle 项目相关配置

image.png

版本参考表

Android Gradle 插件 8.6 版本说明  |  Android Studio  |  Android Developers

Configure a Gradle project | Kotlin Documentation

image.png

图1 gradle 插件与 gradle 版本对照

image.png

图 2 软件与 gradle 插件版本对照

image.png

图3 kotlin 版本对照

更改项目的 gradle 及对应插件版本,注意 gradle 与插件版本格式有差异

image.png

ctrl +shift + alt + s 打开配置面板或在项目路径打开

对应在项目中的位置是

image.png

image.png

image.png

gradle 插件

ext.kotlin_version = '2.0.20'
classpath 'com.android.tools.build:gradle:8.4.0'

gradle 自身

distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip

我这里选择的是 8.10 gradle 版本,插件为 8.4.0,选用版本注意依据官方给的版本对照表,首先根据 图2 确认软件对应的 gradle 插件版本,然后图1 根据插件版本找到对应 gradle 版本

kotilin 插件

image.png

旧的 kotlin 插件编译会提示以上问题,表明不再支持kotlin-android-extensions插件,建议迁移到View Binding和kotlin-parcelize插件。

官方也有迁移教程,但是是视频 视图绑定  |  Android Developers

The 'kotlin-android-extensions' Gradle plugin is no longer supported. Please use this migration guide (goo.gle/kotlin-andr…) to start working with View Binding (developer.android.com/topic/libra…) and the 'kotlin-parcelize' plugin.

去除 apply plugin: 'kotlin-android-extensions',替换为 kotlin-parcelize 插件:

增加 andorid 配置启用 viewBinding

apply plugin: 'kotlin-parcelize' // 新增的插件

android {
  viewBinding {
  enabled = true
  }
}

然后重新构建项目,自此项目配置升级完成

build.gradle 改动

更改 kotlin 插件,jvm 版本, namespace 声明,sdk 声明

apply plugin: 'kotlin-parcelize' // 新增的插件
  viewBinding {
        enabled = true // 确保 View Binding 已启用
    }
    kotlinOptions {
        jvmTarget = "17"
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    
        defaultConfig {
        namespace "com.homurax.broadcastbestpractice"  //namespace  声明
        applicationId "com.homurax.broadcastbestpractice"
        minSdkVersion 21
        compileSdk  34  // sdk 声明
        ----
        }