본문 바로가기

ANDROID/Debug Logs

(19)
[안드로이드] getter for type : Int is deprecated on NetworkInfo 처리 기존 프로젝트에서는 기기가 인터넷에 연결되어 있는지 확인하기위해 NetworkInfo class를 가져와 클래스의 type을 ConnectivityManager의 파라미터로 확인했었는데 (아래처럼) ... val connManager = ApplicationClass.instance.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager// ConnectivityManager 클래스 val activeNetwork = connManager.activeNetworkInfo // NetworkInfo 클래스 if (activeNetwork.type == ConnectivityManger.TYPE_WIFI) { // something hap..
[안드로이드] 구글 플레이스토어 업로드시 발생하는 no properties to serialize found on class Exception 잡기 구글 플레이스토어에 앱 업데이트를 위해 알파버전을 업로드해 테스팅을 진행하고 있는데, 구글에서 테스트한 기기에서 발생한 것 이외에도 직접 업데이트를 진행했을 때 no properties to serialize found on class Exception 이 발생하면서 앱이 초기에 종료되는 현상이 있었다. 서치에다 수정을 반복해서(거의 반나절을) 오류를 잡을 수 있었는데 원인은 1. 번들이나 apk로 만들어질 때 릴리즈 버전에 적용되는 proguard rule 2. Firebase와 연관된 변수들이 private으로 적용됨 정도가 있었다. 1번의 경우 #firebase 관련 이슈 핸들링 위해 proguard rules 수정 -keep public class com.회사.entity.* -keepclassm..
[안드로이드] 앱 스토어 릴리즈용 APK 혹은 Bundle을 만들고자 할 때 발생하는 “Exception while processing task java.io.IOException: Please correct the above warnings first” 곧 시범 릴리즈를 앞두고 앱 빌드를 하는중에 예기치 못한 거대한 숙제에 직면했다. “Exception while processing task java.io.IOException: Please correct the above warnings first” 라는 메시지와 함께 400개가 넘는 오류를 보여주었는데, 자잘자잘한 경고항목들을 수정하는 중에 개별 항목을 전부 수정할 필요가 없다는 것을 알았다. 물론 몇백개의 오류들이 이 문제 때문에 애초에 발생한 것이기 때문에 상당수의 경고를 줄일 수 있었던것이다. 문제는 프로젝트 내에서 사용하는 RxKotlin 때문인데, Rx관련 코드들을 Proguard가 난독화하는 과정에서 오류가 나는 것으로 여겨졌다. 첫번째로 시도한 해결방법은 build.gradle(Modul..
[안드로이드] static View array 혹은 static Bitmap array를 사용할 때의 nullpointerException 제목대로 static view 혹은 Bitmap array를 반복 사용해야 하는 경우 memory 문제때문에 단순하게 array 자체를 null 처리했었는데, 이후 해당 array에 접근시 nullPointerException이 발생. >> static array를 onCreate 부분에서 init하지 않으면 그대로 null로 남아있는 것으로 보임. 해결책 >> A. onCreate 내부에서 static array를 재생성한다>> B. array 전체를 null처리하는 대신에 Arrays.fill(배열, null)로 내용을 비울 수 있음> View와 Bitmap의 경우 0을 할당 할시 오류가 발생하기 때문에 null로 배열을 채워야 함.
[안드로이드] handler 내부에서 Thread 사용시 앱 freezing 발생 개발을 하던 중에 특정 조건이 성립 되었을 때 handler로 메세지를 보내 handleMessage 함수 내에 선언된 Thread를 돌리게 하였다. 헌데 이후에 조건을 충족하고 Thread가 시작되고 나면 지정한 다른 동작들도 먹통이 되고, 전체적으로 앱이 freeze되는 현상이 생겼다. 처음엔 단순히 layout에 접근 못하거나 제어 못하는 것 때문에 생기는 것으로 생각했는데 돌고 돌아 handler 의 handleMessage 함수 안의 Thread 때문인 것을 확인했다. private void handleMessage(Message msg) { switch (msg.what){ case START_WRITE : // Thread 부분 break; } } handler의 handleMessage는 ..
[안드로이드] Fatal signal 11 (SIGSEGV) at 0x00000008 (code=1) 관련 오류는 Lolipop에서는 아예 일어나지 않는 오류정도 였는데, 요즘 테스트 기기가 킷캣으로 제한되다 보니 멈췄다 하면 로그를 봤을때 다반수가 SIGSEGV 오류인 걸 볼 수 있었다. 골치아픈건 이게 네이티브 레벨에서 일어나는(메모리단에서?) 오류라 코드로 일어나는 부분을 확인하기가 어렵다는 점이다. 덕분인지 원인도, 해결방안도 가지각색으로 나오는 걸 서치해보면 확인할 수 있다. 그중에 분명한건 어느 시점에서 오류가 발생하는 게 느껴질 정도로 빈도가 잦은 구간이 딱 있어서 해당 액티비티 안의 코드를 중점으로 이것저것 작업을 해보고 있다. 관련해서 테스트를 하면서 오류가 발생하는 대로 계속 상처를 덧대듯이 보완사항을 적용해보고, 또 게시글에 업데이트 할 예정이다. 그동안 적용한 해결책은 아래와 같다...
[안드로이드] android.os.FileUriExposedException: file exposed beyond app through Intent.getData(). 해결 파일 오픈을 하는중에 안드로이드 태블릿에선 문제없이 열리던 파일이 폰에서 테스트하니 열리지 않던 문제가 있었다. Exception 내용은 android.os.FileUriExposedException: file exposed beyond app through Intent.getData() 로 서치를 해보니 안드로이드 API 23버전 이상부터는 다른 방법으로 파일을 열어야 한다 정도의 내용이었다. 코드참조를 통해 빌드버전을 확인하고, 버전에 따라 다르게 putExtra 형식으로 추가하였고 여기에 필요한 매니페스트 파일 수정, res 폴더에 xml/ provider_paths.xml 파일 추가 이후 GenericFileProvider까지 액티비티 파일에 추가하여 필요한 구성을 모두 완료하였다. 조금 시간이 ..
[안드로이드] Unsupported method: AndroidProject.getPluginGeneration(). The version of Gradle you connect to does not support that method. To resolve the problem you can change/upgrade the target version of Gradle you conne.. Unsupported method: AndroidProject.getPluginGeneration(). The version of Gradle you connect to does not support that method. To resolve the problem you can change/upgrade the target version of Gradle you connect to. Alternatively, you can ignore this exception and read other information from the model .Error:Could not determine the class-path for interface com.android.builder.m..