【问题标题】:Need to clean project after changing layouts in Android Studio在 Android Studio 中更改布局后需要清理项目
【发布时间】:2018-06-04 20:16:49
【问题描述】:

当我在 XML 布局文件中更改诸如 maxLengthTextInputEditText 之类的小东西时,我需要清理项目以让 AS 拾取更改。

res文件夹的结构是:

分辨率
- 布局
- 绘图
- ...

没有更多的子文件夹。 AS 3.1.1,Gradle 4.6。我试图在 gradle 中添加这个:

sourceSets {
    main.res.srcDirs =  [
                         'src/main/res/anim',
                         'src/main/res/color',
                         'src/main/res/drawable',
                         'src/main/res/drawable-hdpi',
                         'src/main/res/drawable-mdpi',
                         'src/main/res/drawable-xhdpi',
                         'src/main/res/drawable-xxhdpi',
                         'src/main/res/drawable-xxxhdpi',
                         'src/main/res/menu',
                         'src/main/res/mipmap-dpi',
                         'src/main/res/mipmap-hdpi',
                         'src/main/res/mipmap-mdpi',
                         'src/main/res/mipmap-xhdpi',
                         'src/main/res/mipmap-xxhdpi',
                         'src/main/res/mipmap-xxxhdpi',
                         'src/main/res/raw',
                         'src/main/res/values',
                         'src/main/res/values-land',
                         'src/main/res/values-large',
                         'src/main/res/values-v21',
                         'src/main/res/valuesw820dp',
                         'src/main/res/xml',
                         'src/main/res/layout',
                         'src/main/res']
}

有没有办法防止每次都清理项目以使更改生效?

因此,每当我对 XML 文件进行更改并运行应用程序时,我应该会看到我的更改,但我必须每次都清理项目并且它变得很烦人。

【问题讨论】:

  • 你开启省电模式了吗?
  • @Sagar 它不会改变任何东西

标签: android android-studio gradle android-gradle-plugin


【解决方案1】:

首先,您需要在 res 文件夹旁边创建额外的资源文件夹,而不是在其中创建。然后尝试制作像this example这样的XML:

sourceSets{
     main  {
         manifest.srcFile 'src/main/AndroidManifest.xml'
         java.srcDirs = ['src/main/java', '.apt_generated']
         aidl.srcDirs = ['src/main/aidl', '.apt_generated']
         res.srcDirs = [
            'src/main/res',
            'src/main/test',
            'src/main/login',
            'src/main/main',
            'src/main/includes'
        ]
    }
}

注意:你的附加资源文件夹会在不清理项目的情况下改变效果。

【讨论】:

  • 在其他项目中,当我在 res 文件夹下有布局时它可以工作,所以我希望相同。
  • 您可以创建新项目或修改现有项目。
  • 当然可以,我希望 gradle 获取我在默认 android 项目文件夹 res/layout 中所做的更改。它没有这样做,你告诉我我需要将layout 移出res 文件夹才能使其正常工作,所以我告诉你它在虚拟项目上作为res/layout 工作它应该在这里而不破坏默认文件夹结构。
  • 它在 Android Studio 3.2 中也不能在项目结构中工作,我该如何解决这个问题?
【解决方案2】:

我认为您不需要每次都清理项目。对于一些小的更改,您甚至不需要再次运行应用程序,只需单击即时运行即可,因为它会将更改直接热交换到当前活动中。

还有什么特别的原因你要添加路径到 gradle 吗? AFAIK,仅当您更改路径并将其设置为其他内容时,您才需要执行此操作。在您的情况下,路径位于其默认位置,因此我看不出这背后的原因。尝试从 gradle 中删除它并打开即时运行。

这些链接应该会有所帮助:

https://developer.android.com/studio/run/#instant-run https://developer.android.com/studio/write/add-resources

【讨论】:

  • 问题是,可以说,我更改了 TextInputEditText 的 maxLength,点击“运行”并希望在手机上进行更改,但事实并非如此。我需要清理项目并运行应用程序。
  • 您是否尝试过从 gradle 文件中删除默认路径目录?尝试看看问题是否已解决,如果仍然存在,您可以测试以下作为故障排除措施来缩小问题的范围:1)创建一个新的虚拟项目,看看即时运行是否在该项目中运行而无需清理/构建。如果没有,那么您的 AS 构建或系统可能存在一些错误。如果它确实在那里工作,那么我们可以确定问题出在这个特定项目上。
  • 我只是尝试了 gradle 中的默认路径目录作为解决方案之一,但没有成功。从那以后我已经删除了它们。虚拟项目工作正常,无需重建或清理即可更改布局。
  • 好的,这意味着问题出在这个特定的项目上。您是否尝试过一个简单的模块并在其中的虚拟活动中实现相同的操作。如果没有问题,这是基于模块的问题,而不是基于项目的问题,但如果问题仍然存在,那么我们可以确定这是基于项目的问题。
  • 我在更改项目中的任何布局/资源时遇到问题,它只是不接受更改。 .xml 中的任何更改都会在重建或清理后被拾取,它可能是删除文本字段,只是一个属性或字符串。我不知道你所说的“裸骨模块”是什么意思。
【解决方案3】:

xml布局文件更改后无需每次都清理,只需单击预览部分右端的蓝色图标刷新布局,如下图所示。因为有一个名为 Force Refresh Layout 的属性。单击它,您的布局将被刷新。

【讨论】:

  • 无论如何它没有帮助。手机上的即时运行布局仍然没有变化。
【解决方案4】:

问题在于构建风格。其中之一被命名为main,这会导致项目扫描出现问题。更改名称已修复问题。它在较新版本的 gradle 插件中被标记。

【讨论】:

    【解决方案5】:

    您可以尝试在 Android Studio 中启用 INTANT RUN 功能。它对我有用。

    如果您使用的是 MAC,请转到首选项,搜索即时运行并检查右侧窗口中的启用选项。

    启用后,您可以转到 RUN 并点击 Apply Changes,而不是运行。

    【讨论】:

    • 我已启用即时运行。当我使用即时运行时,它不会检测到布局的变化并且什么也不做。
    【解决方案6】:

    升级 Android Studio 到 3.1.3 解决我的问题

    Download Latest Version 3.1.3

    或者您可以做的是单击此信息按钮,然后刷新布局将解决问题

    【讨论】:

    • 我有 3.1.3。您突出显示的此按钮显示“没有问题”的新窗口。强制重新加载然后再次运行应用程序或立即运行并没有改变布局(我尝试从加载屏幕中删除图像,如果有关系的话)。
    猜你喜欢
    • 2015-11-25
    • 2021-07-14
    • 2015-04-19
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多