升級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共存了
留言
張貼留言