升級SDK Build-tools 23.0.2之後會與Multidex發生衝突
當升級SDK Platform API 23之後,發現已經有Build-tools Version 23.0.2,想說就順便升級一下,結果就發生...
查詢的結果發現是與Multidex發生衝突了。由於之前在Build-tools 22.0.1就已經有使用了Multidex了,因此建議如果有要使用Multidex就先不要把Build-tools升級到23.0.2,就用Build-tools 22.0.1就好。在此提供升級SDK為23且可以使用Multidex在gradle的設定:
雖然在Multidex的Google官方文件中提到把MultiDexApplication加到manifest的application裡:
但在實作過程,常常已經有自訂Application來存放資料了
於是將自訂的Application改成:
再把Manifest改成:
於是就可以繼續使用自訂的Application與MultiDex共存了
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java'' finished with non-zero exit value 3
查詢的結果發現是與Multidex發生衝突了。由於之前在Build-tools 22.0.1就已經有使用了Multidex了,因此建議如果有要使用Multidex就先不要把Build-tools升級到23.0.2,就用Build-tools 22.0.1就好。在此提供升級SDK為23且可以使用Multidex在gradle的設定:
android {
compileSdkVersion 23
buildToolsVersion '22.0.1'
defaultConfig {
applicationId "com.ingree.cwwebsite"
minSdkVersion 15
targetSdkVersion 23
// Enabling multidex support.
multiDexEnabled true
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
雖然在Multidex的Google官方文件中提到把MultiDexApplication加到manifest的application裡:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
但在實作過程,常常已經有自訂Application來存放資料了
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
}
}
於是將自訂的Application改成:
public class MyApplication extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
MultiDex.install(getApplicationContext());
}
}
再把Manifest改成:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name=".MyApplication">
...
</application>
</manifest>
於是就可以繼續使用自訂的Application與MultiDex共存了
留言
張貼留言