-
[Error] Execution failed for task ':app:transformClassesWithDexForDebug'Android Error 2016. 11. 9. 19:02
· Execution failed for task ':app:transformClassesWithDexForDebug'
Android Studio에서 테스트용 앱을 새로 만들다가 에러가 발생했다!!
1 무슨 에러인가?
내가 겪은 상황은 아래 스크린샷과 같다.
문제의 원인은 Android는 메소드의 갯수의 제한이 있다.
메소드의 ID를 지정하게 되는데 그 아이디는 0~0xffff 까지 지정이 된다.
그 갯수가 65536개이고 지금 현상은 그 수를 넘은것이다.
위치 테스트를 하기 위해서 googlePlayService 라이브러리를 추가한것이 문제를 야기했다.
googlePlayService 뿐만아니라도 다른 라이브러리를 여러개 추가해 사용하면 충분히 발생할 수 있는 문제이다.
2 해결
- 문제가 된 라이브러리
compile 'com.google.android.gms:play-services:9.8.0'
이 문제를 해결하기 위해서는 MultiDex 기술을 사용하여야 한다.
MultiDex는 65536의 메소드 수를 멀티멀티하게 사용하게 해준다.
* MulityDex는 SDK Build-tools 21.1.1 이상에서 지원한다.
지금부터 MulityDex를 적용해 보겠다.
처음으로 app 단위의 gradle 설정파일에 들어가서 다음과 같이
defaultConfig에 multiDexEnabled true 와
dependencies에 multuDex를 추가해준다.
defaultConfig {
applicationId "com.sample.sampleApplication"
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName "1.0"
multiDexEnabled true ← 이 부분 추가}
dependencies {
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:multidex:1.0.0' ← 이 부분 추가
compile 'com.google.android.gms:play-services:9.8.0'
}그다음 Application class를 하나 생성하여 MultiDexApplication을 상속받는다.
public class MyApplication extends MultiDexApplication {
public ApplicationManager() {
super();
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
}}
생성한 Application Class를 Manifest에 등록해준다.
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".MyApplication" ← 이 부분 추가android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>이렇게만 작성 후 다시 빌드를 하면 에러는 사라진다.
Application class에 대한것은 구글을 검색해보기 바란다.
Application class가 필요없다면 Manifest application name에 바로 MultiDexApplication을 넣어도 된다.
'Android Error' 카테고리의 다른 글
[Error] Manifest merger failed : Attribute application@xxx... (0) 2020.11.23 [Error] Program type already present 에러 처리 (0) 2020.01.08 [Error] Failed to resolve: com.android.support:support-v4:26 (0) 2017.11.06 [Error] Execution failed for task ':app:compileDebugJavaWithJavac' (2) 2016.11.07