본문 바로가기

Android/Exceptions30

Android Error Building Signed APK: keystore.jks not found for signing config 'externalOverride' release를 위해 서명한 뒤 빌드하려 할 때 해당 Exception이 발생하는 경우가 있습니다. Android Studio의 상단메뉴 Build>Generate Signed Bundle/APK...를 눌러서 키스토어 경로를 열어보면 위의 해당 Error가 발생합니다. 즉, 본 Exception은 릴리즈 서명용 인증서 위치가 이동되어서 발생하는 오류 메시지 입니다. 인증서 위치를 수정해주시면 제대로 빌드됩니다. 2020. 6. 10.
java.lang.RuntimeException: Can't toast on a thread that has not called Looper.prepare() 1. Log로 실행 유무를 확인하다가 Toast로 바로 확인해야 할 부분이 생겨서 Log를 Toast로 변경하였다가 발생하였습니다. 아무생각 없이 넣다보면 가끔 생기게됩니다. JobIntentService를 처음 다루다가 발생하게 되었습니다. Service니까 당연히 Background로 돌아가게 되는부분인데 생각없이 하다보니 오랜만에 해당 Exception을 확인하게 되었습니다. 2. 원인은 명확합니다. 해당 Exception의 세부적인 부분을 보면 아래와 같습니다. java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$4.done(AsyncTask.java:399) at .. 2020. 6. 5.
java.lang.RuntimeException: Unable to instantiate service --------Service> is not accessible from java.lang.Class<android.app.AppComponentFactory> 1. 브로드 캐스트 리시버를 통해서 실행되는 JobIntentService를 구현한 뒤, 테스트 해보니 JobIntentService가 실행될 때 Exception이 발생하며 앱이 종료되는 현상을 확인했습니다. 2. 여기저기 확인해 보니 대략적인 이유는 아래와 같습니다. 2.1 Service class에 public이 선언되지 않음 2.2 Service class에 default constructor를 만들어주지 않음 개발자 문서에 있는 JobIntentService의 예제를 참고하여 구현했는데 약간의 차이가 있는것 같습니다. 컨스트럭터가 없으면 문제가 발생하는것 같습니다. 3. 2번의 원인을 아래와 같이 해결 해 주니 발생하지 않았습니다. public class SomeThihgService exten.. 2020. 6. 5.
proguard-rules 작성 시 <Unresolved class name Error> lint 며칠전 안드로이드 스튜디오가 4.0 배포를 시작했습니다. 꽤나 예전에 안드로이드 스튜디오 최신버전 업데이트 이후에 몇몇 문제로 고생한적이 있어서 바로 안드로이드 스튜디오 업데이트는 잘 하지 않는데 어쩌다보니 업데이트를 해버리게 되었네요. 4.0 업데이트 이후 proguaproguard-rules 에서 위와 같은 오류가 발생하는 경우가 있습니다. 빌드가 안되는것인 아닌데 lint표시가 영 거슬리네요. 빨간줄 이 표시되는 가장 최상단의 룰 위에서 Alt+ Enter로 Suppress for statement 를 선언해주도록 합니다. 아래부분이 선언되며 lint 표시가 제거되게 됩니다. #noinspection ShrinkerUnresolvedReference Reference : Unresolved clas.. 2020. 6. 3.
java.lang.IllegalStateException: ScrollView can host only one direct child NestedScrollView과 ScrollView를 사용할 때 발생하였습니다. xml레이아웃의 ScrollView안에 여러개의 Layout을 넣어두었을때 발생하였습니다. scrollview.xml 스크롤뷰 내부에는 하나의 차일드 뷰만 들어가야 한다는 내용이며 아래와 같이 해당 xml에서 스크롤뷰 내부의 내용을 scrollview_inner.xml 의 새로운 레이아웃 xml파일로 만든 뒤 include로 넣어준 후에는 정상적으로 동작하였습니다. scrollview.xml scrollview_inner.xml 2020. 5. 3.
java.lang.ClassNotFoundException: com.google.android.gms.auth.api.signin.internal.SignInConfiguration Google Drive API를 통해 로그인 할때 발생하였습니다. debug 할때는 발생하지 않았는데 release 빌드 후 앱을 설치하여 테스트 하니 발생하는것을 확인했습니다. 발생원인은 API Console에 Oauth 2.0 클라이언트 ID를 등록하지 않아서 발생하는 문제입니다. 앱 여러개에 구글 로그인 기능을 추가하다 보니, 한 앱에는 debug SHA-1 key만 등록하고 release SHA-1 key는 등록해놓지 않았네요. 이참에 SHA-1 Key를 등록하는 부분을 기록해 두고자 합니다. 구글에서 제공하는 API들을 사용하기 위해서는 API Console에 인증정보를 등록하는 작업을 해야합니다. API Console에서 사용자 인증정보>OAuth 클라이언트 ID를 통해서 해당 키를 등록할 수.. 2020. 4. 22.
Duplicate Platform Classes--- Error: commons-logging---/Error: httpclient defines classes Google Drive API 적용 중 발생한 Exception 입니다. Debug 빌드로 테스트할때는 잘되었는데 release 빌드시에는 아래의 오류가 발생하며 앱이 빌드되지 않는 현상이 발생합니다. Error: commons-logging defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the libra.. 2020. 4. 22.
"kind":"drive#fileList","incompleteSearch":false "kind":"drive#fileList","incompleteSearch":false 구글 DriveAPI 사용시 위 오류가 발생하며 API가 동작하지 않았습니다. 위 오류 외에도 파일 생성을 하고 확인하면 "untitled name" 과 같은 파일명을 return 할 뿐입니다. 해당 오류의 원인은 proguard 설정에 있습니다. proguard-rules.pro에 다음과 같은 내용을 추가해 주시면 해결됩니다. -keep class * extends com.google.api.client.json.GenericJson {*;} -keep class com.google.api.services.drive.** {*;} 2020. 4. 21.
More than one file was found with OS independent path 'META-INF/DEPENDENCIES' 안드로이드 프로젝트를 빌드 하는 중 상기 오류가 뜨며 앱이 빌드되지 않는 현상이 발생했습니다. 상기 오류가 발생하는 이유는 안드로이드가 참고하고 있는 외부 라이브러리 중에 META-INF/DEPENDENCIES를 중복으로 참고하고 있는 파일이 있기 때문입니다. 해당 오류를 해결하는 정확한 방법은 라이브러리 종속성 오류가 생기지 않게 중복으로 참고 하는 라이브러리를 개별적으로 찾아서 해당 부분만 제외시켜주는 방법입니다. 하지만. 중요한 부분이 아니라면 무시하는 방법도 있지 않을까요? 특히 META-INF과 관련된 내용은 라이브러리의 .jar 패키징과 관련된 파일일 뿐이므로 해당 오류는 무시해도 될겁니다. app 단의 build.gradle에 아래 부분을 추가해 주면, 크게 중요하지 않은 라이브러리 종속성 .. 2020. 4. 20.
The parents field is not directly writable in update requests. Use the addParents and removeParents parameters instead. Google Drive API의 files().update(fileid, metadata,con) 메소드를 사용할 때 발생했습니다. File metadata = new File().setName(name); metadata.setParents(Collections.singletonList("appDataFolder")); metadata.setMimeType("text/plain"); // Convert content to an AbstractInputStreamContent instance. ByteArrayContent contentStream = ByteArrayContent.fromString("text/plain", content); // Update the metadata and content.. 2020. 4. 15.