android - 主源集中的重构不会传播到非 Activity 构建变体

标签 android android-studio android-studio-3.0

我有 src/main/java 作为主源集。还有一个名为 heroes 的产品风格的 src/heroes/java 源集和一个名为 src/villains/java 的产品风格的源集反派

那些只有一个构建类型,debug。这意味着构建变体面板将包含 heroesDebugvillainsDebug

现在,在 Android Studio 中,如果我选择构建变体 heroesDebugsrc/mainsrc/heroes 变为“Activity ”,同时 src/villains“停用”。这意味着我可以在那些“Activity ”源集上使用 ALT + Insert、代码完成和 IDE 的其他此类功能。语法高亮之类的东西甚至不会显示在“非 Activity ”源集中的文件上。

这基本上没问题。但是,如果我重命名或移动 src/main 中的许多类,这些类是在 src/villains 中的许多地方导入的,那么我将遇到一个大问题。我注意到重构的包或类名反射(reflect)在 src/heroes 中,但是当我切换到 villainsDebug 时,我会看到红线和 Cannot resolve symbol src/villains 中的 错误,其中 IDE 应该更新包或类的新名称或位置!

这也适用于相反的情况——如果 villainsDebug 处于 Activity 状态并且我重新调整了 src/main 中的一些代码,更改将传播到 src/villains 但如果我再次切换到 heroesDebug,这些更改将无处可见。

编辑

那么我如何让 src/main 中的更改传播到“非 Activity ”构建变体的所有其他源集?

最佳答案

尝试将此添加到您的应用程序 build.gradle 中:

android{
...
    sourceSets{
        main{
            java.srcDirs = ['src', 'heroes', 'villains']
        }
    }
}

这将导致所有目录可见,您应该只在重构时执行此操作,然后在重构之后删除它,因为您会看到重复的类异常。此外,这将创建一个奇怪的 Android 项目 View ,其中包含多个 java 文件夹。可能不是最好的解决方案,但它对我有用

关于android - 主源集中的重构不会传播到非 Activity 构建变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51884947/

相关文章:

android - 从 Android Studio 运行时,为什么 Android 应用程序会在后台启动?

android - 在 Android Studio 2 模拟器上登录 Google 帐户挂起

java - 在android布局中显示多个cardview在另一个之上

Java 未处理的异常

recaptcha - 在 Android Studio 3 中呈现 Google Recaptcha

android - Android Camera Client 的优先级是如何设置的?

android - 未找到具有有效 http ://prefix 的 Activity (浏览器)

Android Studio 缓慢的增量构建

android - java.lang.NoSuchMethodError : No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)

安卓 SQLite : Index -1 requested with a size of 1