Dan*_*son 10 android android-xml android-studio
这是一个非常奇怪的.今天AS(1.4)在我的项目中停止正确地重新创建调试apk:
我对构建过程并不是很了解,所以我所尝试的就是删除构建文件夹,在Android Studio上重新导入项目和旧的重启/无效缓存.关于什么可能导致这种奇怪的行为或如何解决它的任何建议?
编辑: 很难确定这背后的行为 - 有时我注意到它一直只影响某些xml文件.看起来这个人有同样的问题:Android Studio项目构建问题
我花了几个小时从头开始重新安装Android Studio,问题仍然存在.
实际上我不久前就发现了这个问题,而且非常微妙。我的项目有构建变体,其中包含主源集以及每个变体的源集。它的定义有点像这样:
sourceSets {
def defaultDirectory = "src/main/"
def flavorADirectory = "src/flavor_a/"
flavor_a {
java.srcDirs = [defaultDirectory + 'java', flavorADirectory + 'java']
res.srcDirs = [defaultDirectory + 'res', flavorADirectory + 'res']
manifest.srcFile flavorADirectory + 'AndroidManifest.xml'
}
def flavorBDirectory = "src/flavor_b/"
flavor_b{
java.srcDirs = [defaultDirectory + 'java', flavorBDirectory + 'java']
res.srcDirs = [defaultDirectory + 'gift', flavorBDirectory + 'res']
manifest.srcFile flavorBDirectory + 'AndroidManifest.xml'
}
}
Run Code Online (Sandbox Code Playgroud)
因此,变体编译得很好,但每个 xml 更改都会触发完整的重建。我不确定其背后的确切原因,但我相信 mainsourceset必须被指定为一个单独的实体。Android Studio 必须看到main关键字并更好地知道如何处理它。这意味着不需要将默认目录指定为构建变体源集的一部分,像这样删除它,可以使问题消失并且不再发生持续重建:
sourceSets {
def defaultDirectory = "src/main/"
main {
java.srcDirs = [defaultDirectory + 'java']
res.srcDirs = [defaultDirectory + 'res']
}
def flavorADirectory = "src/flavor_a/"
flavor_a {
java.srcDirs = [flavorADirectory + 'java']
res.srcDirs = [flavorADirectory + 'res']
manifest.srcFile flavorADirectory + 'AndroidManifest.xml'
}
def flavorBDirectory = "src/flavor_b/"
flavor_b{
java.srcDirs = [flavorBDirectory + 'java']
res.srcDirs = [flavorBDirectory + 'res']
manifest.srcFile flavorBDirectory + 'AndroidManifest.xml'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |