【发布时间】:2015-01-20 14:19:21
【问题描述】:
Error:Execution failed for task ':app:proguardRelease' 还有很多其他问题,但我找不到任何可以告诉invalid entry CRC 该怎么做的问题。
我正在从 Eclipse 迁移到 Android Studio,我正在尝试弄清楚它是如何工作的,尤其是 Gradle。我导入了一个现有的 Android 项目。在将 sdk 更新为 api 21 并在文件/项目结构中设置 java 7 路径后,一切似乎都在工作。我可以运行我的应用程序并构建它。但是,当我执行 Gradle assembleRelease 或 Build/Generate Signed APK 时,出现以下错误:
Error:Execution failed for task ':app:proguardRelease'.
> java.io.IOException: Can't read [/home/me/adt-bundle/sdk/platforms/android-21/android.jar] (invalid entry CRC (expected 0x51d86068 but got 0xe44d416b))
这是我的 gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 8
targetSdkVersion 21
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
}
}
dependencies {
compile 'com.android.support:support-v4:21.0.3'
}
如果我设置minifyEnabled false,我可以让它工作,但我想使用proguard,而不是禁用它。
我猜这与旧文件名和新文件名不匹配有关,但我无法弄清楚它是什么。我即将放弃并回到Eclipse,但我想我会先在这里问。谢谢。
线索而非解决方案(对我而言):
- getDefaultProguardFile is unrecognized by Gradle file symbol resolver
- https://code.google.com/p/android/issues/detail?id=72400
- Android Studio - ProGuard "java.io.IOException ...bin\classes (No such file or directory)"
- What is CRC? And how does it help in error detection?
更新
不只是从 Eclipse 导入的文件不起作用。即使在 Android Studio 中启动一个新项目也没有用。
按照@ScottBarta 的建议,我从here 重新下载了sdk。 (因为我已经安装了 Android Studio,所以我只下载了页面底部的“SDK Tools Only”。)我重命名了旧的 sdk 文件夹(而不是删除它)。当我打开 Android Studio 时,它询问 sdk 文件夹在哪里,所以我将它指向我刚刚下载的新文件夹。当 gradle 在启动时尝试做它的事情时,它发现了其他缺少的组件(平台、构建工具、appcompat),所以我只是根据 gradle 给我的错误消息一一安装。
我在下载所有内容时正在写这篇文章。让我们看看它现在是否有效……是的!它确实!谢谢你,@ScottBarta!
【问题讨论】:
标签: android eclipse gradle android-studio