0.从0开始:To run dex in process, the Gradle daemon needs a larger heap.
It currently has 1024 MB.
这个简单明了让给分配大一点,有内存不用白不用--工欲善其事必先利其器,很多东西一开始就做好比较好。
当然在gradle.properties这个文件, 修改:
org.gradle.daemon=true #就是让你让你编译时使用守护进程。
org.gradle.parallel=true #使用并行编译
org.gradle.jvmargs=-Xmx2048m #JVM最大允许分配的堆内存,按需分配
-XX:MaxPermSize=512m #JVM最大允许分堆非内存,
- Error:Execution failed for task':app:transformClassesWithJarMergingForDebug'.]
如Execution failed for task ':app:transformClassesWithJarMergingForRelease'.
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: okio/AsyncTimeout$1.class
原因:引用了相同的jar包。
可以用双击shift 查找报错的那个具体的类,解除依赖 同步即可。
2.误删文件,恢复办法(本地记录真是好)
选中项目 右键 local hostory--show history
可以看到所有的记录日志 选择恢复即可。
- 无法删除app\build\模块下部分文件
重新编译的时候无论 make/clean 都是无效。
解决办法:Ⅰ.找到项目路径打开,手动删除,手动删除不了的话可以选择杀软的“强力删除”
Ⅱ.如果此时usb连着手机并且手机依然运行着项目,那就先断开usb在进行clean/make操作。
4.Error:Failed to open zip file.Gradle's dependency .
出现场景:从另外一个机子上打包的项目,导入另外一台机子,gradle 版本不一致。
导入报错:
Error:Failed to open zip file.Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
Re-download dependencies and sync project (requires network)
正常的解决思路,想着是需要代理一下,但是设置代理再次导入非常缓慢。那就修改修改 project\app\gradle\wrapper\gradle-wrapper.properties中的distributionUrl 把https改为http ,重新导入。
搞定。
也有说法,也可以的:
直接在网上找到gradle-3.3-all.zip下载下来,不要解压缩,放在类似下面的中 C:\Users\Administrator.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9,
下载地址在这里找:http://services.gradle.org/distributions/ ,里面各个版本都有。
或者简单方法,新建一个项目,此项目正常工作-->把项目中的配置使用的版本复制过来一份OK,如图。
5.一直卡住 Building gradle project info 或者gradle 下载失败
此场景出现在导入项目但是gradle版本不同,因为墙太高,出不去进不来,所以使用对应的版本下载不下来,这个时候,可以直接取消。
如下图在自己电脑上正常项目的gradle-wrapper.properties里的内容复制到导入的项目里,重新编译即可,如上图。
6.编译报错 java.exe'' finished with non-zero exit value X 等。
大致失败报错信息如下:
Error:Execution failed for task ':dexAppDebug'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:
Process 'command 'C:Program FilesJavajdk1.8.0_25� in java.exe'' finished with non-zero exit value 1
这大多是因为编译时默认分配的内存不够用出现的异常。
解决办法,在app的bulid.gradle 的android 节点 定义 更大内存分配,如图
7.更新Android support 26.0.0-alpha1或更高编译出错:Manifest merger failed
①报错大概是这个样子:
Manifest merger failed : Attribute meta-data#support.VERSION@value value=(25.3.0) from [com.android.support:support-v13:25.3.0]
AndroidManifest.xml:27:9-31 is also present at [com.android.support:preference-v7:26.0.0-alpha1]
AndroidManifest.xml:24:9-38 value=(26.0.0-alpha1). Suggestion: add 'tools:replace="android:value"' to element at AndroidManifest.xml:25:5-27:34 to override.
google 一下.
地址:http://stackoverflow.com/questions/42949974/android-support-repo-46-0-0-with-android-studio-2-3
重点是:
What's the problem
Some libraries depend on version "X or newer" of Android support libraries so Gradle dependency resolution grabs whatever is the newest available ignoring you actually have a precise version specified in your dependencies block.
This is not what you want. You want all support libraries with same version and major version has to match compile SDK version.
What's the solution
Fortunately you can force a specific support library version.
Put this at the end of your app module build.gradle:
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '25.3.0' } } }}
Of course replace the version with whatever it is you're using.
Version values for support libraries in dependecies
block are now irrelevant.
重点在这里,解决办法就是强制使用相同版本的库:在moudle 的build.gradle中 添加上,版本自选.
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.0'
}
}
}
}
直接写在gradle最后边就可以,如图:
②Manifest merger failed,报错就容易理解了,引用的libary库的minsdk小于了com.android.support:appcompat-v7:26.0.0-alpha1的最小支持
Manifest merger failed : uses-sdk:minSdkVersion 11 cannot be smaller than version 14 declared in library [com.android.support:appcompat-v7:26.0.0-alpha1]
解决办法:把引用libary 库的manifest 中的minsdk 修改重新编译即可。
8.Error:Execution failed for task ':app:processDebugResources'.
这个错误一般是资源引用有问题,clean无效之后请仔细检查文件名字。
一般都是命名不对:① 资源文件目录下含有数字开头的(这个一般不会);②资源中含有空格,尤其是文件名的开始结尾。
9.Error:(1, 0) Your project path contains non-ASCII characters. This will most likelycause the build to fail on Windows.
项目路径含有中文,将中文替换掉就行了。
10、Error running app: Instant Run requires ‘Tools|Android|Enable ADBintegration’ to be enabled
菜单栏,Tools -> Adnroid -> enable ADB integration即可。