2017-03-25 51 views
0

我試圖創建依賴於Java代碼從Java庫模塊的Android應用程序,但每當我試圖用任何物體從Java庫,我總是得到以下應用:transformClassesWithDexForDebug與多個模塊

任務':app:transformClassesWithDexForDebug'的執行失敗。

com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:進程 '命令' C:\ Program Files文件\的Java \ jdk1.8.0_121 \ BIN \ java.exe的'非零退出值完成1

我看着下面Execution failed for task ':app:transformClassesWithDexForDebug' while implementing Google sign in for Android我嘗試了幾乎每一個建議,但仍然贏得了沒有建立。我的Java庫做的JSON庫,Android使用,和我得到的那幾個警告,但它說,它只是被忽略

這裏是我的build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 

    defaultConfig { 
     applicationId "pwils33.familymap" 
     minSdkVersion 23 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 
    } 
    buildTypes { 
     debug { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    dexOptions { 
     javaMaxHeapSize "4g" 
     preDexLibraries false 
     incremental true 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile project(':shared') 
    compile 'com.android.support:appcompat-v7:25.3.0' 
    compile 'com.android.support:support-v4:25.3.0' 
    compile 'com.android.support:multidex:1.0.1' 
} 

我使用我已經構建了另一個Java應用程序的模塊,所以我無法將其轉換爲android庫。任何幫助,將不勝感激

編輯我試圖讓我的應用程序多DEX應用爲好,這不是工作要麼,這裏是我的清單的應用

<?xml version="1.0" encoding="utf-8"?> 
<manifest package="pwils33.familymap" 
     xmlns:android="http://schemas.android.com/apk/res/android"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" 
     android:name="android.support.multidex.MultiDexApplication"> 
     <activity android:name=".activities.MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

回答

0

嘗試下面的代碼,以解決您的問題:

android { 
    defaultConfig { 
     minSdkVersion 15 
     targetSdkVersion 25 
     multiDexEnabled true 
    } 
} 

dependencies { 
    compile 'com.android.support:multidex:1.0.1' 
} 
0

包括在你的應用程序的模塊build.gradle文件庫:

compile 'com.android.support:multidex:1.0.1' 

然後啓用通過增加defaultConfig節multidexing:

multiDexEnabled true 

如果不重寫Application,編輯清單的<Application>標籤,並添加:

<application 
     android:name="android.support.multidex.MultiDexApplication"> 

如果你重寫Application類,從MultiDexApplication類延伸(從上面提到的庫:

public class AndroidApplication extends MultiDexApplication { ... } 

如果你重寫Application類,它實際上是擴展其他類(例如,由於使用ORM庫,往往需要從它的類擴展的),由attachBaseContext調用安裝multidex:

MultiDex.install(this); 

更多詳情請見Google's documentation

+0

我試過了,那沒有任何工作,我會更新帖子 – pwils33

+0

這如何適用於有多個模塊項目? – toobsco42

0

我終於明白了。事實證明,multi-dex庫不支持1.8,因爲我的計算機上有java 8,當它從我的java模塊中找到編譯後的代碼時,它已經破壞了它。我將以下幾行添加到我的構建中。gradle這個對我的Java模塊,終於得到它的工作

sourceCompatibility = 1.7 
targetCompatibility = 1.7 

dependencies { 
... 
}