본문 바로가기

안드로이드142

안드로이드12 위젯 PendingIntent Flag 오류 안드로이드 프로젝트의 타겟을 31(안드로이드12)로 설정하고 위젯에서 아래와 같은 오류가 발생했습니다. Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles. PendingIntent에 FLAG_.. 2022. 11. 12.
java.lang.UnsupportedClassVersionError: com/android/tools/idea/gradle/run/OutputBuildAction has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up.. 윈도우즈에서 개발한 안드로이드 프로젝트를 맥북에서 컴파일이 아래와 같은 오류가 발생했습니다. java.lang.UnsupportedClassVersionError: com/android/tools/idea/gradle/run/OutputBuildAction has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 OutputBuildAction 클래스가 55 에서 컴파일 되었고, Java Runtime은 52라서 오류가 발생하는 것 같습니다. 그래서 안드로이드스.. 2022. 11. 8.
안드로이드12 개발 앱 실행 "앱이 설치되지 않았습니다." 표시되는 현상 안드로이드 스튜디오에서 오랜만에 프로젝트를 생성했습니다. 기존의 앱은 안드로이드 11 이하의 앱들이라 별문제 없이 개발을 하고 있습니다. 안드로이드12로 개발시 Activity에 필수 속성으로 exported가 추가되어 속성값을 false로 지정했습니다. 그리고 안드로이드 스튜디오에서 앱을 설치 및 실행을 했는데, 앱이 실행되지 않았습니다. 그래서 설치된 개발 앱을 탭하니 아래와 같이 "앱이 설치되지 않았습니다."라고 메세지가 나왔습니다. 해결 방법은 아래와 같이 LAUNCHER Activity의 exported="true"를 지정하면 안드로이드 스튜디오에서 앱을 실행하면 정상적으로 구동됩니다. 2022. 7. 14.
앱이 Google Play 정책을 준수하지 않음(앱삭제) 오늘 새벽 3시에 메일이 도착했습니다. 아래와 같이 Google Play 정책 위반으로 플레이스토어의 앱이 삭제되었다네요. 제가 경험한 Google Play 정책 위반으로 앱이 삭제 된 경우 HTTP 통신 시 Header 값을 위변조 했을 경우 Activity에서 실행한 전면광고가 종료되기 전에 Activity가 종료되는 경우 Main Activity에 어떠한 정보(ListView 등..)도 표시 되지 않는 경우 Google Play 정책 위반 사항을 처리했다면, Google Play Console에서 검토를 요청하는 방법은 아래와 같습니다. Google Play Console에서 정책 위반 확인하기 1. Google Play Console에서 해당 앱으로 이동합니다. 2. 외쪽 메뉴 중에 정책 상태를 .. 2022. 3. 16.
Android12에서 INSTALL_FAILED_UPDATE_INCOMPATIBLE 오류 안드로이드 스튜디오에서 안드로이드12에 디버깅 앱을 설치 할 때 아래의 오류가 표시되며 앱이 설치가 안되었습니다. Installation did not succeed. The application could not be installed: INSTALL_FAILED_UPDATE_INCOMPATIBLE 구글링해서 찾아보니 타켓SDK가 안드로이드12(API 31)인 경우 AndroidManifest.xml 내의 activity, service, receiver에 android:exported를 필수로 입력해야 위의 오류 없이 설치가 가능합니다. android:exported는 다른 앱에서 개발하는 앱에 접근 할 수 있도록 설정하는 속성으로 아래의 링크에서 상세 내용을 확인하세요. https://develop.. 2022. 3. 12.
안드로이드 & iOS 앱 화면 디자인 모음 사이트 안드로이드나 iOS 앱을 설치하지 않고 화면의 디자인을 확인 해 볼 수 있는 사이트입니다. 개발 시 디자인 참고용으로 유용할 것 같네요. 한국 앱 화면 디자인을 확인 할 수 있는 사이트 https://wwit.design/ What Was IT 한국의 UI/UX 모바일 패턴을 수집합니다. wwit.design 해외 앱 화면 디자인을 확인 할 수 있는 사이트 https://mobbin.design/ Mobbin - The world’s largest mobile app design reference library Save hours of UI & UX research with our library of 50,000+ fully searchable mobile app screenshots. mobbin.de.. 2021. 12. 28.
안드로이드 스튜디어 설치 된 SDK 삭제하기 안드로이드 스튜디오로 개발을 오래하다 보면 여러 SDK를 설치하게 됩니다. 안드로이드 SDK의 용량이 몇 GB는 됩니다. 저의 경우 C 드라이버의 용량 문제로 설치 된 SDK 를 삭제하였는데, 방법은 아래와 같습니다. 1. 안드로이드 스튜디오의 Tools > SDK Manager 메뉴를 클릭합니다. 2. SDK 목록이 표시되며 Status에 설치 유무만 표시되는데, 화면 오른쪽 하단의 Show Pakage Details를 체크하면 설치 된 상세한 정보를 확인 할 수 있습니다. 3. 삭제를 원하는 SDK의 체크박스를 체크 해제합니다. 4. 화면 하단의 Apply 버튼을 클릭합니다. 5. 삭젝하려는 목록과 용량이 표시되며, OK 버튼을 클릭하면 삭제가 진행됩니다. 6. 아래와 같이 삭제가 진행됩니다. 2021. 12. 15.
안드로이드 스튜디어 - Java 소스를 Kotlin 소스로 변환하기(Convert) 안드로이드에서 개발한 Java 소스를 Kotlin 소스로 변환하는 기능을 안드로이드 스튜디오에서 제공하고 있습니다. 간단하게 소스를 선택하고 마우스 오른쪽을 클릭하여 팝업에서 "Convert Java File to Kotlin File"을 클릭하면 Java 소스가 Kotlin 소스로 쉽게 변환됩니다. Java 소스 Kotlin으로 변환 된 소스 2021. 10. 1.
안드로이드 코틀린 - google play-services를 이용한 위치정보 얻기 안드로이드의 기본 라이브러리로 위치정보를 얻기 위해서는 상당히 많은 작업이 필요한다. google의 play-services의 라이브러리를 이용하면 조금(?)은 쉽게 위치정보를 얻을 수 있습니다. 위치 정보를 얻기 위해서는 권한(Permission)과 권한 요청을 해야 하는데 아래의 포스트를 참고하세요. https://docko.tistory.com/739 안드로이드 코틀린 - 권한(Permission) 요청 안드로이드에서 위치, 저장소 읽기/쓰기 등을 하기 위해서는 권한이 필요합니다. 앱에서 사용자에게 권한을 요청하는 방법입니다. 1. AndroidManifast.xml에 필요한 권한을 추가합니다. 위치 권한(ACC docko.tistory.com 1. 모듈(app) gradle에 play-servic.. 2021. 9. 27.
안드로이드 코틀린 - 권한(Permission) 요청 안드로이드에서 위치, 저장소 읽기/쓰기 등을 하기 위해서는 권한이 필요합니다. 앱에서 사용자에게 권한을 요청하는 방법입니다. 1. AndroidManifast.xml에 필요한 권한을 추가합니다. 위치 권한(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION)을 추가했습니다. ... 2. 앱이 실행하면 권한이 부여되지 않으면 요청합니다. class MainActivity : AppCompatActivity() { val MY_PERMISSION_ACCESS_ALL = 100 ... override fun onCreate(savedInstanceState: Bundle?) { ... if(ActivityCompat.checkSelfPermission(this, android.Ma.. 2021. 9. 26.
안드로이드 코틀린 - 뷰바인딩(View Binding) 안드로이드 스튜디오 4.0이상에서의 뷰바인딩하는 방법입니다. findViewById를 사용해서 뷰(View) 객체를 얻는 것보다 상당히 간편합니다. 1. 모듈 gradle에 뷰바인딩 클래스를 생성하도록 설정합니다. android { ... buildFeatures{ viewBinding true } ... } 2. 뷰바인딩 클래스 이름 규칙은 아래와 같이 레이아웃 XML 파일의 이름에 따라 결정됩니다. 레이아웃 XML 뷰바인팅 클래스명 activity_main.xml ActivityMainBinding item_list.xml ItemListBinding 3. 뷰바인딩 객체 사용하기 (1) 멤버 변수로 뷰바인딩 변수를 생성한다. 뷰바인딩 변수는 onCreate 에서 초기화를 하기 위해서 lateinit로.. 2021. 9. 25.
안드로이드 스튜디오 - 자동 임포트(Auto Import) 설정 안드로이드 스튜디오에서 코딩 시 자동으로 임포트(Auto Import)를 설정하는 방법입니다. 임포트를 자동으로 해주므로 코딩 시 귀찮음이 줄어듭니다. 1. File > Settings..메뉴를 클릭합니다. 2. Settings 화면에서 Editor > General > Auto Import를 선택하고, Java 또는 Kotlin에 자동 임포트 설정을 합니다. 아래의 항목을 체크하여 설정합니다. Add unambiguous imports on the fly Optimize imports on the fly(for current project) 3. 자동 임포트 예시입니다. 2021. 9. 11.
안드로이드 코틀린(Kotlin) - 오류 Module was compiled with an incompatible version of Kotlin. 안드로이드 앱 개발을 자바로 하다 늦게 코틀린으로 개발하기 위해서 스터디 중입니다. 처음부터 아래와 같은 컴파일 오류가 발생하고 말았습니다. C:/Users/~~~~/.gradle/caches/transforms-2/files-2.1/73386cfabd81641255b1adb6f916fd20/jetified-kotlin-stdlib-1.5.10.jar! /META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16. 구글링 결과 코틀린의 버전을 상향해야 하네요. 안.. 2021. 9. 10.
안드로이드 개발 Java에서 Kotlin으로의 항해 Java로 안드로이드를 개발한지 거의 10년이 되어가고 있습니다. 구글에서 안드로이드 개발언어로 Kotlin을 발표한지도 몇년이 지났습니다. Kotlin이 아닌 Java로만으로 앱을 개발 할 수 있어서 Kotlin에 관심을 갖고 있지 않았습니다. 개인적으로 안드로이드 앱만 개발하고 있어 Kotlin으로 넘어가지 않으려고 했습니다. 주위의 지인들의 프로젝트에 안드로이 앱 개발 시 현재는 Kotlin으로 개발을 한다는 말을 듣게 되었습니다. 늦었지만 지금이라도 Kotlin으로 안드로이드 앱을 개발하기 위해서 스터디를 하려고 합니다. 강좌는 유튜브로 기본 문법을 학습하려고 합니다. https://www.youtube.com/playlist?list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN.. 2021. 9. 1.
안드로이드 에뮬레이터 스크린샷과 저장 위치 안드로이드 에뮬레이터에서 스크린샷을 하는 방법과 스크린샷의 저장 위치에 대해서 설명합니다. 뭐 간단하지만 자꾸 스크린샷의 저장 위치 잊어버려서 구글링을 하게 되네요. ㅠㅠ 에뮬레이터의 오른쪽 메뉴에서 카메라를 클릭하면 스크린샷이 저장됩니다. 스크린샷의 저장 위치는 바로 바탕화면이랍니다. 2021. 6. 10.
안드로이드 스튜디오에서 다국어 작업하기 한국어로 개발된 안드로이드 앱에 영어를 추가하려고 합니다. 기본언어가 한국어로 되어있는데 이것을 영어로하고, 한국어를 추가하려고 합니다. 안드로이드 스튜디어의 Translations Editor를 이용하여 언어를 추가하여 다국어 지원을 하는 방법입니다. 1. res/values/string.xml을 엽니다. 2. 상단의 Open Editor를 클릭하여 Translations Editor를 엽니다. 3. Translations Editor에서 한국어를 추가합니다. 4. 다국어 작업을 합니다. - Defalut Value : 영어 - Korean : 한국어 ※ 다국어 테스트는 폰의 언어를 바꾸어서 진행 하시며 됩니다. 2021. 3. 31.
Could not download aapt2-windows.jar (com.android.tools.build:aapt2:3.2.0-4818971): No cached version available for offline mode 아래와 같은 오류가 갑자기 발생해버렸습니다. Could not download aapt2-windows.jar (com.android.tools.build:aapt2:3.2.0-4818971): No cached version available for offline mode Gradle이 Offline Mode로 설정이 되어있어 해당 Jar를 다운로드 할 수 없어서 발생한 오류입니다. [Offline Mode 해제] 1. View > Tool Windows > Gradle 메뉴를 선택합니다. 2. Offline Mode 토글 버튼을 해제로 변경 후 다시 컴파일 합니다. ※ 아래와 같이 Gradle Offline Mode 해제 할 수 있습니다. 2021. 3. 16.
안도로이드 SQLite insert or replace 구현 SQLite에서 Insert와 Update를 함께 처리 할 수 있는 "insert or replace" 문법이 있습니다. SQLite의 "insert or replace"에 대해서는 아래의 링크를 참고하세요. https://docko.tistory.com/entry/SQLite-inert-or-replace%EC%98%A4%EB%9D%BC%ED%81%B4MS-SQL-Merge-%EA%B8%B0%EB%8A%A5 SQLite inert or replace(오라클/MS-SQL Merge 기능) 오라클 또는 MS-SQL의 Merge와 유사한 기능으로 SQLite에서는 insert or replace 기능이 있습니다. 사용법은 Merge보다 간단하지만, 디테일한 적용은 조금 부족합니다. insert or repl.. 2021. 2. 15.
E/RecyclerView: No layout manager attached; skipping layout 아래의 오류는 RecyclerView에 Layout Manager를 설정하지 않아 서 발생합니다. E/RecyclerView: No layout manager attached; skipping layout 아래와 같이 RecyclerView에 layoutManager를 설정하면 됩니다. app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" 2021. 2. 5.
Android resource linking failed(error: unexpected element <queries> found in <manifest>) 갑자기 안드로이드 스튜디오에서 프로젝트를 컴파일하니 아래와 같은 오류가 발생해서 당황했습니다. 구글링을 하니 프로젝트를 클리어 후 재컴파일 해보며 된다는 등의 처리방법이 있는데 그래도 해결하지 못했습니다. [오류] Execution failed for task ':app:processDebugResources'. > Android resource linking failed D:\Project\TVSchedule3\app\build\intermediates\merged_manifests\debug\AndroidManifest.xml:15: AAPT: error: unexpected element found in . [해결] android/build.gradle Android Gradle plugin 버전을.. 2021. 1. 30.
귀하의 앱에서 Google AdMob 광고 게재가 중지되었습니다 귀하의 앱에서 Google AdMob 광고 게재가 중지되었습니다 위와 같은 제목으로 애드몹으로부터 메일을 받았습니다. 해당 앱은 게시를 중지했던 앱인데 몇개월 후가 지난 지금에서야 정책 위반으로 광고 게재를 중지한다고 합니다. 애드몹의 계정이 여러번의 정책 위반을 하게 되면 계정 정지가 될 수도 있다는 불안한 마음 때문에 조치를 하려고 합니다. 그래서 정책 센터에 해당 정책 위반에 대해서 "앱이 게시 중지인데 어떻게 해야 하냐?"고 문의를 했으나 답변에 별다른 내용 없이 정책 위반이라고 다시 메일이 왔습니다. 그래서 이것 저것 구글링을 해보니 광고단위를 삭제하면 된다고 해서 광고 단위를 삭제하고 검토 요청을 하였습니다. 애드몹에서는 앱은 삭제 할 수는 없고, 광고 단위는 삭제 할 수 있는데 방법은 아래와.. 2020. 8. 17.