안드로이드
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() 는 읽기 전용으로 설정하게 됩니다.