【问题标题】:How can I open an older project(with an SDK version of 23) in android如何在 android 中打开旧项目(SDK 版本为 23)
【发布时间】:2025-12-25 08:15:16
【问题描述】:

我正在关注 Mark Wickham 的《实用 Android》一书。我正在尝试从 Connections 应用程序 here 打开源代码,但由于它是一个较旧的项目(2018 年),因此遇到了很多问题。

问题

  • 卡在加载屏幕设备上;无法运行项目

我的尝试

具体来说,在这个应用程序中,我的屏幕如下所示:

如果您查看最顶部,我无法选择任何设备。请注意,任何其他项目都不会发生这种情况(尝试创建空白项目,没有出现问题)。

如何运行这个项目?

谢谢!

应用构建等级:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30

    defaultConfig {
        applicationId "com.wickham.android.connections"
        minSdkVersion 19
        targetSdkVersion 30
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def project = "Connections"
            def SEP = "_"
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def version = variant.versionName
            def date = new Date();
            def formattedDate = date.format('ddMMyy_HHmm')

            def newApkName = project + SEP + version + SEP + formattedDate + ".apk"

            output.outputFile = new File(output.outputFile.parent, newApkName)
        }
    }
}

项目 build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.1'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

我刚刚从这里的连接应用程序中稍微编辑了 build.gradle:https://github.com/Apress/practical-android

【问题讨论】:

  • “因为它是一个较旧的项目(2018 年)” - 从文件的外观来看,它比那个更旧。构建说明可以追溯到 Android 6.0,现在大约有 6 年历史了。您可以考虑使用较新的书籍。
  • 嗯..它发表于 2018 年,但可能写得更早?无论如何我可以运行该项目吗?谢谢。
  • 我正在尝试学习网络,这是我能找到的最新内容。
  • “无论如何我可以运行这个项目吗?” - 可能,但你实际上并没有解释你的任何问题。例如,您的标题具有“具有较旧的依赖项”,但该项目没有依赖项。您可能会考虑编辑您的问题,删除除第一段之外的所有内容,然后准确解释您的“许多问题”是什么。解释你尝试了什么,并详细解释症状是什么。
  • “我正在努力学习网络”——我不知道您是如何定义“网络”的,但是有很多关于 Android 应用程序开发的书籍比那本书更新并展示了网络 I /O。我自己写了some of them

标签: android android-studio


【解决方案1】:

最有可能是这些项目的gradle构建工具的版本与你的Android Studio支持的构建工具不兼容..

因此,在打开任何这些项目之前(以使它们不被 Android Studio 修改),您可以将它们迁移到您在 android-studio 上已有的 gradle 版本。为此,您可以使用文本编辑器进行更改:

  1. myAppName\gradle\wrapper\gradle-wrapper.properties 文件中,在distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip 行中:更改为您的gradle 版本(因此您需要在示例6.7.1 中更改此编号)

您可以通过C:/Users/myUserName/.gradle/wrapper/dists/了解Android Studio的当前gradle版本

  1. myAppName\build.gradle 中,您需要更改 gradle 插件版本以匹配您从第 1 步开始的 gradle 分发版本。 Documentation table that lists which version of Gradle is required for each version of the Android Gradle plugin.

更新

请按照以下步骤操作。虽然很乏味,但很有效:

  1. 创建一个全新的项目,其包名与您的项目相同。

  2. 将您项目的srclibraw .. 或/app 下的任何资产文件夹复制到全新项目的/app 中..

  3. 删除themes.xml 文件

  4. 将依赖项从\app\build.gradle 复制到新项目并将compile 替换为implementation,并将testCompile 替换为testImplementation

我对其中一个应用程序 emailing 应用程序进行了测试,它运行了。

【讨论】:

  • 嗨,我已经通过以下方式更改了我的依赖项:添加 google() 添加 mavenCentral() 将构建更改为 4.2.1,将 gradle 包装器更改为 6.7.1,但它仍然无法正常工作。谢谢。
  • 我也试过把compile sdk版本改为30,targetSdk版本也调整为30。
  • 嗨@CodingChap 值得分享两个项目/模块build.gradle 内容以便有人可以提供帮助
  • @CodingChap 请检查答案中的更新部分
最近更新 更多