HOME > android > tips

안드로이드 - Cleartext HTTP ... not permitted 예외 해결 방법

Exoplayer에서 Http의 mp3파일을 스트리밍하려고 했는데, Cleartext HTTP traffic to www.soundhelix.com not permitted와 같은 에러를 만났습니다. 원인은 Android Pie부터 Http 접근을 허용하지 않기 때문입니다. usesCleartextTraffic=true로 설정하면 Http 접근이 허용 됩니다.

06 Oct 2019

안드로이드 빌드 에러 - Calls to Java default methods are prohibited in JVM target 1.6

안드로이드 스튜디오를 코틀린 코드를 빌드하면서 아래와 같은 에러를 만났습니다. calls to Java default methods are prohibited in JVM target 1.6. Recompile with -jvm-target 1.8. build.gradle에서 java 버전을 변경하면 에러가 해결됩니다.

06 Oct 2019

안드로이드 - systrace로 성능 분석하는 방법

안드로이드의 systrace는 시스템 성능을 분석하기 위한 툴입니다. 안드로이드 플랫폼에는 atrace라는 모듈이 있는데, systrace는 이 모듈에 trace를 추출하도록 요청합니다. 파일로 trace가 추출되면, Chrome 브라우저에서 결과를 확인할 수 있습니다.

06 Oct 2019

안드로이드 boot.img의 커널과 램디스크를 수정하는 방법

unpackbootimg와 mkbootimg를 이용하여 boot.img의 kernel 및 ramdisk를 수정할 수 있습니다. 디바이스에서 boot.img를 받고, 커널과 램디스크 영역을 수정하여 디바이스에 flash하는 방법을 정리하였습니다.

18 Aug 2019

삼성 안드로이드 오딘(Odin), Linux, Windows 실행 파일 다운로드

오딘(Odin)은 삼성 갤럭시 폰에 펌웨어 바이너리를 다운로드하는 툴입니다. 안드로이드 디바이스의 내부 스토리지는 몇몇 파티션으로 나누어져 있고, 펌웨어 바이너리에서 해당 파티션에 맞는 파일을 알아서 flash해줍니다. Linux, Windows 실행 파일을 다운로드 할 수 있습니다.

11 Aug 2019

안드로이드 Drawable을 Bitmap으로, Bitmap을 Drawable로 변경하는 방법

Drawable을 Bitmap으로 변경하는 방법 및 Bitmap을 Drawable로 변환하는 방법을 소개합니다. 또한 AdaptiveIconDrawable을 Bitmap으로 변환하는 방법을 알아봅니다. 안드로이드의 리소스들은 기본적으로 Drawable로 가져옵니다. 하지만 간혹 코딩을 하다보면 Bitmap을 인자로 받는 애들이 있고, 이 때문에 변환이 필요합니다.

28 Jul 2019

안드로이드 - JSON을 파싱하는 방법

Android에서 JSONObject로 JSON(JavaScript Object Notation)을 파싱하는 방법에 대해서 정리하였습니다. JSON은 Object, Array, Key-Value 타입으로 이루어져 있으며 Value는 String, Int, Long, Boolean 등의 타입을 지원합니다.

21 Jul 2019

안드로이드 스튜디오에서 Adaptive, 일반 아이콘 만들기

안드로이드 스튜디오에서 아이콘을 쉽게 만들 수 있는 Image Asset Studio를 제공합니다. 이것을 이용하면 Adaptive 아이콘 및 일반 아이콘을 쉽게 만들 수 있습니다. 또한 플레이스토어에 앱을 등록할 때 필요한 512x512 사이즈의 이미지도 생성됩니다.

20 Jul 2019

안드로이드 - invalid channel for service notificaiton 에러 해결 방법

Android에서 startForeground()로 bacground 서비스를 foreground로 변경할 때 발생하는 "invalid channel for service notification" 에러 해결 방법입니다. 안드로이드 O부터 노티피케이션을 등록할 때 ChannelId를 먼저 등록해야 합니다.

20 Jul 2019

안드로이드 앱이 32/64bit 기기에서 동작하도록 만들기

최근 구글 플레이스토어는 64비트를 지원하는 앱만 등록되도록 정책을 변경하였습니다. Analyze APK를 이용하여 앱이 32 또는 64비트를 지원하는지 확인하고, 64비트를 지원할 수 있게 만드는 방법을 설명합니다. 또한, abilist 프로퍼티를 확인하여 디바이스가 어떤 아키텍처를 지원하는지 확인하는 방법을 소개합니다.

05 Jul 2019

안드로이드 스튜디오에서 so 라이브러리를 추가하는 방법

Android Studio 프로젝트에 네이티브 라이브러리인 so 라이브러리를 추가하는 방법과, Apk에 라이브러리가 포함되었는지 확인하는 방법을 알아보겠습니다. 프로젝트에 포함시키려면 jniLibs 폴더 아래에 armeabi-v7a, arm64-v8a 등, 아키텍처별로 폴더를 만들고 so 라이브러리 파일을 넣어야 합니다.

04 Jul 2019

안드로이드 스튜디오 - "GC overhead limit exceeded" 에러 해결 방법

Android Studio에서 앱을 빌드할 때 GC overhead limit exceeded 에러가 발생하였습니다. 해결방법은 gradle.properties에서 메모리 사이즈 늘리도록 설정을 변경하는 것입니다. OOM이 발생하는 원인을 제거할 수 있겠지만, 원인찾기가 어려워 메모리 사이즈를 늘려 해결하였습니다.

18 May 2019

안드로이드 - INSTALL_FAILED_TEST_ONLY 에러 해결방법

adb로 apk를 설치할 때 INSTALL_FAILED_TEST_ONLY 에러가 발생할 때가 있습니다. TestOnly로 빌드된 apk라서 그렇습니다. -t옵션을 주어 설치를 하거나 AndroidManifest.xml에서 testOnly 속성을 제거해야 합니다. 그럼 TestOnly 앱으로 빌드되지 않아 에러가 발생하지 않습니다.

17 May 2019

안드로이드 앱(apk)을 decompile하는 다양한 방법

Android apk를 decompile하는 방법을 소개합니다. Apk는 zip으로 압축된 파일입니다. 압축을 풀면 여러 리소스 파일들과 실행 파일인 dex(Dalvik Executable)파일이 있습니다. 몇개의 툴(Apktool, dex2jar, jd-cmd)을 이용하여 이 파일들을 decompile하면 사람이 읽을 수 있는 코드 형태로 변환이 가능합니다.

08 Feb 2019

안드로이드 - 실행가능한 Activity인지 확인하기

Android에서 실행 가능한 액티비티는 말그대로 실행할 수 있는 액티비티를 말합니다. 어떤 액티비티를 실행했을 때 실행이 안될 수 있는데요. 미리 체크를 한다면 다른 예외처리를 할 수 있기 때문에, 액티비티 실행 전에 꼭 체크를 해야 합니다.

22 Oct 2018

안드로이드 - 런처(Launcher)화면에 보이는 앱 리스트 가져오기

Android 앱을 만들어 디바이스에 설치하면 Launcher에 내 앱이 보입니다. 그 이유는 기본적으로 아래와 같은 인텐트필터를 내 액티비티에 설정했기 때문입니다. Launcher는 이 인텐트필터를 등록한 액티비티를 찾아서 화면에 보여줍니다. Launcher가 어떻게 이 앱들을 가져오는지 코드로 확인해보겠습니다.

22 Oct 2018

안드로이드 - StorageStatsManager로 App 크기 계산하기 (StorageStats)

Android의 StorageStatsManagerService는 Storage stats에 대한 정보를 제공해주는 Service입니다. App이 디바이스에서 차지하는 size를 계산할 때 사용할 수 있습니다. App뿐만이 아니라 UID, User 별로 차지하는 정보도 알 수 있습니다.

06 Oct 2018

쉘 명령어로 안드로이드 emulator를 실행하는 방법 (우분투)

Android의 system 파티션은 기본적으로 read only로 설정되어있습니다. writable로 변경하려면 emulator를 실행할 때 옵션을 writable로 설정하면됩니다. 안드로이드 스튜디오에서 AVD manager로 실행할 때는 옵션을 줄 수 없어, shell command로 실행해야 합니다.

12 Aug 2018

안드로이드 - CTS hostside를 gradle로 빌드하는 방법

CTS(Compatibility Test Suite)는 안드로이드의 호환성테스트입니다. AOSP를 받으면 CTS를 빌드할 수 있습니다. CTS를 빌드하여 의존성있는 jar 라이브러리를 얻었고 이것과 함께 gradle로 CTS hostside 코드가 빌드되도록 해보았습니다.

06 Jul 2018

Android 에뮬레이터 - kvm permission denied 문제 해결

우분투에서 Android Studio의 Emulator가 동작안하는 문제가 있었습니다. 해결 방법은 kvm group에 나의 user를 추가하는 것이었습니다.

01 Jun 2018

안드로이드 - WIFI로 adb 연결하기

adb wifi를 이용하면 무선으로 adb로 디버깅을 할 수 있습니다. 하지만 사전에 usb cable을 연결하여 설정이 필요합니다. usb케이블을 연결하여 tcpip 명령어로 port 번호를 변경하여 adbd를 재시작해야합니다. port번호는 5555가 default입니다. 그리고 wifi에 연결된 디바이스의 IP주소를 알아야합니다.

20 May 2018

안드로이드 - SharedPreferences에 ArrayList를 저장하는 방법

Android의 SharedPreferences는 1개의 키에 대해서 1개의 String을 저장합니다. 하지만 1개의 Key에 대해서 ArrayList 형식의 데이터를 저장할 수도 있습니다. DB를 쓸 정도는 아닌데, SharedPreferences를 사용하기에는 번거롭네. SharedPreferences에 ArrayList를 저장할 수 있으면 좋을텐데... 하고 말이죠.

05 Mar 2018

Ubuntu에서 Android10 소스 다운로드 및 빌드

안드로이드10이 공개되었씁니다. 안드로이드 source는 많은 git project들로 이루어져있습니다. Full Build를 하려면 우리는 각각의 git project를 다운받아서 폴더별로 정리를 한 뒤에 Build를 해야 하는데요. 매우 귀찮은 작업이기 때문에, Google에서는 REPO라는 툴을 만들어 이를 이용하여 쉽게 source를 관리하고 있습니다.

04 Jan 2018

안드로이드 - XML에 대한 간단한 설명

XML(Extensible Markup Language)은 W3C에서 많은 종류의 데이터를 저장, 관리 등의 목적으로 개발되었습니다. Android에서는 XML은 AndroidManifest.xml, Layout 파일, Resource 파일 등 다양한 곳에서 사용됩니다. 개발자는 XML을 이용해 데이터를 쉽게 표현하고, Android OS(framework)는 개발자가 표현한 XML을 파싱하여 데이터를 구조화합니다.

19 Aug 2017

Android 설치 방법 (Windows)

Android Studio를 설치하기 전에 Java를 설치해야합니다. JDK는 Java Development kit으로 개발용 JAVA입니다. 아래 링크로 들어가서 자신의 운영체제에 맞게 JDK를 다운받아 설치합니다.

14 Aug 2017