0.從0開(kāi)始:To run dex in process, the Gradle daemon needs a larger heap.
It currently has 1024 MB.
這個(gè)簡(jiǎn)單明了讓給分配大一點(diǎn),有內(nèi)存不用白不用--工欲善其事必先利其器念赶,很多東西一開(kāi)始就做好比較好康震。
當(dāng)然在gradle.properties這個(gè)文件淤袜, 修改:
org.gradle.daemon=true #就是讓你讓你編譯時(shí)使用守護(hù)進(jìn)程鸳慈。
org.gradle.parallel=true #使用并行編譯
org.gradle.jvmargs=-Xmx2048m #JVM最大允許分配的堆內(nèi)存妒挎,按需分配
-XX:MaxPermSize=512m #JVM最大允許分堆非內(nèi)存异逐,
- 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 查找報(bào)錯(cuò)的那個(gè)具體的類(lèi),解除依賴 同步即可欲逃。
2.誤刪文件莲组,恢復(fù)辦法(本地記錄真是好)
選中項(xiàng)目 右鍵 local hostory--show history
可以看到所有的記錄日志 選擇恢復(fù)即可。
- 無(wú)法刪除app\build\模塊下部分文件
重新編譯的時(shí)候無(wú)論 make/clean 都是無(wú)效暖夭。
解決辦法:Ⅰ.找到項(xiàng)目路徑打開(kāi)锹杈,手動(dòng)刪除,手動(dòng)刪除不了的話可以選擇殺軟的“強(qiáng)力刪除”
Ⅱ.如果此時(shí)usb連著手機(jī)并且手機(jī)依然運(yùn)行著項(xiàng)目迈着,那就先斷開(kāi)usb在進(jìn)行clean/make操作竭望。
4.Error:Failed to open zip file.Gradle's dependency .
出現(xiàn)場(chǎng)景:從另外一個(gè)機(jī)子上打包的項(xiàng)目,導(dǎo)入另外一臺(tái)機(jī)子裕菠,gradle 版本不一致咬清。
導(dǎo)入報(bào)錯(cuò):
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)
正常的解決思路,想著是需要代理一下奴潘,但是設(shè)置代理再次導(dǎo)入非常緩慢旧烧。那就修改修改 project\app\gradle\wrapper\gradle-wrapper.properties中的distributionUrl 把https改為http ,重新導(dǎo)入画髓。
搞定掘剪。
也有說(shuō)法,也可以的:
直接在網(wǎng)上找到gradle-3.3-all.zip下載下來(lái)奈虾,不要解壓縮夺谁,放在類(lèi)似下面的中 C:\Users\Administrator.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9廉赔,
下載地址在這里找:http://services.gradle.org/distributions/ ,里面各個(gè)版本都有匾鸥。
或者簡(jiǎn)單方法,新建一個(gè)項(xiàng)目,此項(xiàng)目正常工作-->把項(xiàng)目中的配置使用的版本復(fù)制過(guò)來(lái)一份OK蜡塌,如圖。
5.一直卡住 Building gradle project info 或者gradle 下載失敗
此場(chǎng)景出現(xiàn)在導(dǎo)入項(xiàng)目但是gradle版本不同勿负,因?yàn)閴μ吡蟀霾蝗ミM(jìn)不來(lái),所以使用對(duì)應(yīng)的版本下載不下來(lái)奴愉,這個(gè)時(shí)候攒至,可以直接取消。
如下圖在自己電腦上正常項(xiàng)目的gradle-wrapper.properties里的內(nèi)容復(fù)制到導(dǎo)入的項(xiàng)目里躁劣,重新編譯即可,如上圖库菲。
6.編譯報(bào)錯(cuò) java.exe'' finished with non-zero exit value X 等账忘。
大致失敗報(bào)錯(cuò)信息如下:
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
這大多是因?yàn)榫幾g時(shí)默認(rèn)分配的內(nèi)存不夠用出現(xiàn)的異常。
解決辦法熙宇,在app的bulid.gradle 的android 節(jié)點(diǎn) 定義 更大內(nèi)存分配鳖擒,如圖
7.更新Android support 26.0.0-alpha1或更高編譯出錯(cuò):Manifest merger failed
①報(bào)錯(cuò)大概是這個(gè)樣子:
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
重點(diǎn)是:
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.
重點(diǎn)在這里,解決辦法就是強(qiáng)制使用相同版本的庫(kù):在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'
}
}
}
}
直接寫(xiě)在gradle最后邊就可以,如圖:
②Manifest merger failed烫止,報(bào)錯(cuò)就容易理解了蒋荚,引用的libary庫(kù)的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 庫(kù)的manifest 中的minsdk 修改重新編譯即可。
8.Error:Execution failed for task ':app:processDebugResources'.
這個(gè)錯(cuò)誤一般是資源引用有問(wèn)題馆蠕,clean無(wú)效之后請(qǐng)仔細(xì)檢查文件名字期升。
一般都是命名不對(duì):① 資源文件目錄下含有數(shù)字開(kāi)頭的(這個(gè)一般不會(huì));②資源中含有空格互躬,尤其是文件名的開(kāi)始結(jié)尾播赁。
9.Error:(1, 0) Your project path contains non-ASCII characters. This will most likelycause the build to fail on Windows.
項(xiàng)目路徑含有中文,將中文替換掉就行了吼渡。
10容为、Error running app: Instant Run requires ‘Tools|Android|Enable ADBintegration’ to be enabled
菜單欄,Tools -> Adnroid -> enable ADB integration即可寺酪。