如何在android中打开较旧的项目(SDK版本为23)

如何在android中打开较旧的项目(SDK版本为23),android,android-studio,Android,Android Studio,我正在读马克·威克姆的《实用机器人》一书。我试图从Connections应用程序中打开源代码,但由于这是一个较旧的项目(2018年),我遇到了许多问题 问题 卡在加载屏幕设备上;无法运行项目 我尝试过的 从该链接使缓存无效/重新启动 下面是这个链接,但我在我的项目中找不到任何gradle包装器 具体而言,在该应用程序中,我的屏幕如下所示: 如果你看顶部,我无法选择任何设备。请注意,任何其他项目都不会发生这种情况(尝试创建空白项目,但未出现问题) 如何运行此项目 谢谢 应用程序build.

我正在读马克·威克姆的《实用机器人》一书。我试图从Connections应用程序中打开源代码,但由于这是一个较旧的项目(2018年),我遇到了许多问题

问题

  • 卡在加载屏幕设备上;无法运行项目
我尝试过的

  • 从该链接使缓存无效/重新启动
  • 下面是这个链接,但我在我的项目中找不到任何gradle包装器
具体而言,在该应用程序中,我的屏幕如下所示:

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

如何运行此项目

谢谢

应用程序build.grade:

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)
        }
    }
}
Project 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()
    }
}

我刚刚在这里的connections应用程序中对build.gradle进行了少量编辑:

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

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

  • 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/

  • myAppName\build.gradle
    中,您需要更改gradle插件版本,以与步骤1中的gradle分发版本相匹配 更新

    请遵循以下程序。。这是乏味的,但工作:

  • 创建一个全新的项目,其包名与项目的包名相同

  • 复制
    src
    lib
    raw
    。。或者将项目的
    /app
    下的任何资产文件夹放入全新项目的
    /app

  • 删除
    themes.xml
    文件

  • 将依赖项从
    \app\build.gradle
    复制到新项目中,并将
    编译
    替换为
    实现
    ,将
    测试编译
    替换为
    测试实现


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

    “因为它是一个较旧的项目(2018)”--从文件的外观来看,它比这要旧。构建说明可以追溯到安卓6.0,现在已经有六年的历史了。你可能会考虑使用一本更新的书。嗯,它是在2018出版的,但也许比它早写了。但是,有没有其他方法可以让我运行这个项目?谢谢。我正在努力学习网络,这是我能找到的最新内容。“无论如何,我可以运行这个项目吗?”--可能吧,但你实际上没有解释你的任何问题。例如,您的标题有“与旧的依赖项”,但该项目没有依赖项。你可以考虑编辑你的问题,删掉除了第一段以外的所有段落,然后准确地解释你的“许多问题”。解释你尝试了什么,并详细解释症状是什么。“我正在尝试学习网络”--我不知道你如何定义“网络”,但有许多关于Android应用程序开发的书比这本书更新,并演示了网络I/O。我自己写的。嗨,我通过添加google()改变了我的依赖关系添加mavenCentral()将构建更改为4.2.1,将gradle包装更改为6.7.1,但它仍然不起作用。谢谢。我还尝试将compile sdk版本更改为30,并将targetSdk版本也调整为30。Hi@CodingChap分享project/module
    build.gradle
    内容是值得的,这样有人可以help@CodingChap请检查答案中的更新部分