코딩하는 일용직 노동자

java.lang.SecurityException: Writable dex file '...classes2.dex' is not allowed. 에러 해결 본문

안드로이드

java.lang.SecurityException: Writable dex file '...classes2.dex' is not allowed. 에러 해결

bacass 2024. 5. 27. 15:06
프로젝트를 빌드해서 실행한 후 다시 한번 빌드 후 실행할때부터 java.lang.SecurityException: Writable dex file 오류가 발생했습니다.

java.lang.SecurityException: Writable dex file '/data/data/com.amazon.styledictionaryexample/code_cache/.overlay/base.apk/classes2.dex' is not allowed.
 
 
이럴땐 당황하지 말고 아래처럼 Application onCreate()에 코드를 추가해주면 됩니다.
import android.app.Application
import java.io.File

class App: Application() {
  override fun onCreate() {
    super.onCreate()
    val dexOutputDir: File = codeCacheDir
    dexOutputDir.setReadOnly()
  }
}
Application 클래스가 추가되었으니 AndroidManifest.xml 파일에 android:name=".App" 를 추가해줍니다.
<application
    android:name=".App"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    ...
    android:theme="@style/AppTheme">
Build > Clean Project 를 눌러서 프로젝트를 Clean 시켜준후 다시 빌드해서 실행해보면 됩니다.
 
 
codeCacheDir는 코드의 캐시 디렉토리이고 이곳에 dex파일이 저장됩니다.
dexOutputDir.setReadOnly() 는 읽기 전용으로 설정하게 됩니다.