[英]Build error ,Gradle -> Error:Execution failed for task ':app:preDexDebug'. > org.gradle.process.internal.ExecException:
[英]Error: Gradle: execution failed for task ':app:preDexDebug'
我有一個自己創建的jar從另一個作為庫導入到我的另一個項目中。 當我更改該項目中的代碼並導出一個新的jar來替換舊的時,我再也無法運行我的應用了。 我只收到以下錯誤:
我嘗試刪除,添加和添加為依賴項,添加為庫。 似乎沒什么用。 我也做了干凈的構建和重建。
過去我們看到過這個問題,當時我們的項目是用不同於編譯庫的Java版本編譯的。 神奇的數字僅用於識別類文件,因此這不是問題。 問題是java版本(0034.0000 == Java 8)。
最簡單的方法是針對Java 6,這可能需要從代碼中刪除更新的語法。 在我們的例子中,項目和庫都是我們的,所以我們能夠添加以下內容來強制我們需要的Java版本:
對於android庫,將此代碼添加到“android”擴展對象:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_6
targetCompatibility JavaVersion.VERSION_1_6
}
...
}
對於java庫,在“頂級”添加此代碼:
apply plugin: 'java'
version '1.8.1'
group 'com.yourcompany.package'
sourceCompatibility = JavaVersion.VERSION_1_6 //these two lines
targetCompatibility = JavaVersion.VERSION_1_6 //are the only ones that matter
注意:最后兩行是唯一重要的,我添加其他行只是為了顯示這些行所屬的位置,相對於gradle構建文件的其余部分。
對我們來說,這是由Android SDK構建工具版本引起的。 在v23.x上遇到問題,但不是v22.x. 你需要卸載v23 for cordova來選擇v22。
可能是一種症狀而不是一種原因,但這可能會使某些人處於相同的情況。
雖然您的問題似乎已得到修復,但最終我遇到了類似的錯誤(同時從developer.android.com構建示例)。 如果它對其他人有幫助,我可以通過將JAVA_HOME設置為適當的值來解決它。 在我的情況下它是:
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
添加:
sourceCompatibility = JavaVersion.VERSION_X_X
targetCompatibility = JavaVersion.VERSION_X_X
在Android項目gradle文件和Java庫gradle文件為我工作。
對不起,我會給它+1,但沒有足夠高的聲譽
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.