这是一个非常奇怪的问题。今天AS(1.4)在我的项目中停止正确地重新创建调试apk:
我对构建过程并不是很了解,所以我所尝试的只是删除构建文件夹,在Android Studio上重新导入项目和旧的重启/无效缓存。关于可能导致这种奇怪行为的原因或如何修复它的任何建议?
修改 确定这背后的行为非常困难 - 有时候我注意到它一直只影响某些xml文件。看起来这个人有同样的问题:Android Studio project build issue
我花了几个小时从头开始重新安装Android Studio,问题仍然存在。
答案 0 :(得分:1)
丹尼尔,我自己也明确地注意到了这个问题。除非ADB检测到应用程序当前未安装在目标设备上,否则某些更改似乎无法传播。
免责声明:这是一种解决方法,而不是对行为的解释,但它适用于我。为了解决这个问题,我在重新安装之前配置了我的运行配置来卸载有问题的软件包。请注意,卸载APK显然会影响数据库,来自首选项的持久数据等内容,因此如果您的开发过程依赖于这些内容,请不要使用它。
步骤:(来自here)
adb
,在参数:中输入uninstall <your-package-name>
。
在弹出窗口中单击“确定”时,确保选中了新项目。注意:如果您的PATH环境变量中没有adb,请在Program:字段中提供adb的完整路径(例如/ home / user / android / sdk / platform-tools / adb)。
再次,对不起,这不是问题本身的解释,但这肯定解决了我的问题。
让我知道它对你有用。
答案 1 :(得分:1)
我实际上刚刚在这里发现了这个问题,而且非常微妙。我的项目具有构建变体,其中包含主要源集以及每个变体的源集。它的定义有点像这样:
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'
}
}
所以这些变种编译得很好,但每次xml更改都会触发完整的重建。我不确定它背后的确切原因,但我认为必须将主sourceset
指定为单独的实体。 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'
}
}