라벨이 android인 게시물 표시

Android Sqlite 삭제 방법

아이폰의 경우 앱을 삭제하면 내장된 데이터베이스인 sqlite 도 같이 삭제된다. 하지만 안드로이드 경우는 앱을 삭제한다고 sqlite 가 삭제되지 않는다. 그리하여 개발을 하다 보면 no such Table 이란 에러 메시지를 종종 보게 된다. 이때 사용하는 방법이다. 안드로이드 스튜디오 - menu - view - Tool Windows - Device File Explorer 오른쪽에 파일 리스트가 나온다. /data/data/패키지명/databases/파일명.sqlite 와 파일명.sqlite-journal  파일 두개가 있다. 이 두개를 삭제해야 한다.

Android Java Button Background Color 변경하는 방법

안드로이드 자바에서 버튼 색상을 변경하는 방법이다. 보통의 방법으로 하면 마진이나 라운드 등이 적용되지 않는다. 1. 먼저 기존 배경을 저장한다. Drawable d = button.getBackground(); 2. 저장된 변수를 새로운 색상으로 변경한다. d = DrawableCompat.wrap(d); DrawableCompat.setTintList(d, getResources().getColorStateList(R.color.enableButton)); 3. 수정된 색상을 버튼에 저장한다. button.setBackground(d);

구형 엘지폰에서만 오류나는 현상 조치

신형 단말기와 구형 단말기에 앱이 구동되고 있는 상황이다. 모두 엘지폰이다. 하지만 같은 소스에 로직을 수정했는데 신형 단말기는 잘되는데 구형 단말기에서 오류가 난다. 오류 수정을 위해 그동안 삽질은 스튜디오 버전을 낮춰보기도 하고  NDK 버전도 낮춰 보기도 했다. 하지만 모든게 똑 같았으며 같은 소스에 버전체크를 하면서 바이패스 코드를 넣기도 했다. 하지만 그부분만 넘어가면 또 다른 오류를 토해 냈다. 보안 때문에 MDM 및 SSL-VPN, VGuard 등에서 오류를 토해내었다. 해당 모듈의 회사는 그 이전 버전도 지원하다고 하였다. 구형 엘지폰의 API 버전은 19 였다. 문제의 해결방안이 더이상 없을 정도로 모든 경우의 수를 다 시도했으며 우리의 희망은 꺼져 가는 듯 했다. 나에게 이런 시련이 왜 닥치는걸까? 하며 원망도 했다. 하지만 회사 사무실에서는 더이상 시도할 방법이 나오질 않았다. 토요일 새벽 4시에 잠에서 깨었다. 기존에 잘되던 소스와 안되는 소스를 비교하기 시작했다. com.android.support:multidex:1.0.0 이 추가 되었다는 걸 발견했다. 이문제는 보통 MultiDex 일명 64K 참조 문제라고 한다. 안드로이드 앱 파일(APK)에는 DEK(Dalvik Executable) 파일 형식의 실행가능한 바이트 코드가 포함이 되는데 이 파일이 단일 파일내에서 참조될 수 있는 메소드의 총 개수를 65,535개로 제한되어 나타나는 문제이다. 안드로이드 5.0(API 레벨 21) 미만에서는 multidex 지원 라이브러리로 사용하며 이상에서는 여러개 파일의 DEK 파일을 로드 하는 것을 지원한다. 1. build.gradle(Module: app) android { defaultConfig { multiDexEnabled true <- 추가, API 21 이상일 경우 이것만 추가하면 됨, 하지만 이하일 경우 3번 수정해야 함 } dexOptions { javaM