62

在过去的几个月里,我一直在学习 Android,并且一直使用 Eclipse Juno 作为我的 IDE。

我正在尝试迁移到 Android-Studio,并想知道如何“从构建路径中排除”一些我尚未完成的类?

在 Eclipse 中,直接右键单击即可。我在 Studio 中找不到对它的任何引用。

4

6 回答 6

87

AFAIK IntelliJ 允许排除包。打开项目结构(Linux 中的 Ctr+Alt+Shift+S)> 模块 > 源选项卡。

但是,如果您只想排除一个类,请使用 Gradle 构建文件。

Android Studio 使用 Gradle,因此在 build.gradle 文件中添加排除您的类的 android 配置自定义 SourceSet,例如:

android {
  compileSdkVersion 19
  buildToolsVersion "19.0.3"

  defaultConfig {
     minSdkVersion 19
     targetSdkVersion 19
     packageName "org.homelab.lab"
     testPackageName "org.homelab.lab.test"

  }
  sourceSets {
     main {
         java {
             exclude '**/SomeExcludedClass.java'
         }
     }
     androidTest {
         java {
             exclude '**/TestSomeExcludedClass.java'
        }
     }
  }
 }
于 2013-05-23T08:58:34.770 回答
10

适用于 Android Studio v3.0

apply plugin: 'com.android.application'

android {
    defaultConfig {...}
    buildTypes {...}
    sourceSets {
        main {
            java {
                exclude 'com/example/full/package/path/MainActivity.java'
            }
        }
    }
}
于 2018-03-03T11:28:44.087 回答
6

这是不可能的。

也许它可以在 13 年 5 月提供接受的答案时返回,但不再是(从 1.2 开始)。

这是问题所在:
https ://code.google.com/p/android/issues/detail?id=64957

根据标签,他们的目标是 AS 1.5 以添加这些功能。

于 2015-04-25T22:05:07.117 回答
1

我以前做同样的方式是,

对于 Windows:右键单击 java 文件 -> 在资源管理器中显示 -> 将文件扩展名从“.java”更改为“.c”

对于 Mac:右键单击 java 文件 -> 在 Finder 中显示 -> 将文件扩展名从 '.java' 更改为 '.c'

就如此容易。

于 2019-01-15T08:59:44.623 回答
0

将其移至新文件夹。右键单击 -> 在资源管理器中显示 -> 剪切然后粘贴到新文件夹(在任何项目之外)。我只是在 AndroidStudioProjects 文件夹中创建一个新文件夹并将它们放在那里。

于 2018-07-15T03:18:25.783 回答
0

来自https://stackoverflow.com/a/69261642/3689782的交叉发布,但在这里重复似乎很有用。

我遇到了一种专门针对Android单元测试的方法(但我假设它是适应性强的),它结合了上面链接中的其他解决方案:

def filesToExclude = [
    '**/*TestOne*.kt',
    '**/*TestTwo*.kt',
    ...
]
tasks.withType(org.gradle.api.tasks.SourceTask.class).configureEach {
  it.exclude(filesToExclude)
}
android.sourceSets.test.kotlin.exclude(filesToExclude)

在我的特定情况下,由于发生了其他生成(特别是带有 kapt 的 Dagger),因此需要在测试名称周围使用额外的通配符。

这似乎有点笨拙,但它的工作原理是确保将测试目标排除在实际上可以排除的所有任务(包括构建和 kapt 任务)之外。sourceSets 排除对于不被拾取进行编译的文件仍然是必要的(我认为这是 Kotlin Gradle 插件,但它也可能是 Android Gradle 插件——我在调试 Gradle 构建方面不够精通把它固定下来)。

于 2021-09-20T22:59:32.680 回答