본문 바로가기

Android

(42)
Android P, Cipher에서 BC Provider  가 deprecated Android P 부터 Crypto provider가 제거되기 때문에 아래와 같은 코드는 `NoSuchProviderException` 을 발생시킵니다. SecureRandom.getInstance("SHA1PRNG", "Crypto") 그리고 BC privider도 AOS P부터 사라지기 때문에, 아래처럼 명시적으로 BC provider를 호출하면 마찬가지로 `NoSuchAlgorithmException` 가 발생합니다. Cipher.getInstance("AES/CBC/PKCS7PADDING", "BC") https://android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.html
Appbar layout과 RecyclerView를 같이 쓰면 터치를 두 번 해야 아이템클릭이 되는 버그 Appbar layout과 RecyclerView를 같이 쓰면 터치를 두 번 해야 아이템클릭이 되는 버그가 있습니다. - 구글은 그 버그를 서포트 라이브러리 27.0.1에서 잡았다고 주장합니다만https://developer.android.com/topic/libraries/support-library/revisions.html#27-0-1 - 아직 안 고쳐졌다는 사람도 있다고 합니다.Some users reported that this problem is not fixed in support library 27.0.1. The issue tracker is here. https://issuetracker.google.com/issues/66996774 - 제가 만들고 있던 앱에서도 이 현상이 재현되었습..
안드로이드 스튜디오, Java Scratch 파일 (임시파일)을 만들고 Hello world 실행하기 안드로이드 스튜디오에서 Scratch 파일 (임시 파일)을 만들수 있다는 사실을 알고계신가요? Java, Json 등 다양한 포맷의 임시파일을 만들 수 있고, 이 파일은 현재 프로젝트에 전혀 영향을 주지 않습니다. 간단하게 테스트 해 보고 싶은 Java 코드를 만들어 실행 해 보거나, 임시로 저장이 필요한 정보를 임시 파일에 저장 해 둘 수 있습니다. 파일 - New - Scratch File 을 선택합니다. 먼저 Json 파일을 만들어 볼까요 파일이 만들어 졌고, 여기다가 json 형식의 텍스트를 붙여넣어봅니다. 자동 줄맞춤을 하면! 짜잔! 안드로이드 스튜디오의 모든 편집 기능을 이용할 수 있기 때문에 자동줄맞춤도 가능합니다. 이번에는 Java 파일을 만들어봅시다. 적절한 Hello world Main..
Java, 기본 데이터 타입 안드로이드는 주로 자바를 이용해 개발합니다. 그래서 자바에 대해 잘 알면 좋습니다. 오늘 다룰 주제는 기본 데이터 타입입니다. Primitive data type 이라고 불리는, 자바에서 제공하는 기본 타입입니다. 레퍼런스:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 1. booleanboolean 타입은 true 또는 false 두 가지의 값 중 하나를 가집니다. 즉 1비트의 정보를 나타냅니다.사이즈는 대략 1바이트로 가정합니다. 즉, 공식 문서에 따르면 그 "사이즈"는 정확히 정의되지 않았습니다. Java Virtual Machine 의 구현에 따라 다릅니다. // boolean boolean1 = 0; // ERR..
[ADB] 현재 화면에 표시되는 액티비티가 알고싶다면? 안드로이드 앱 개발을 하다보면, 다른 사람의 소스를 받아서 개발해야 할 때가 있습니다. 그럴 때는 그 소스를 분석부터 해야겠죠. 현재 화면에 떠있는 내용이 어떤 액티비티인지 확인할 수 있다면 굉장히 유용할겁니다. ADB를 이용하여 현재 어떤 액티비티가 실행 중인지 알 수 있습니다. 방법1: adb dumpsys activity 액티비티와 관련된 많은 정보를 얻을 수 있는데, 그 중 액티비티 스택(현재 어떤 액티비가 표시되고 있는지, 그리고 그 액티비티를 호출한 액티비티는 어떤 것인지)를 알 수 있습니다. 다음 굵은 글씨 부분을 확인하면 됩니다. Running activites (most recent first): TaskRecord{ ~~} Run #2: HistoryRecord{ ~~ com.kou.e..
[Java] 현재 수행중인 메소드의 이름을 얻는 방법 아래와 같이 getEnclosingMethod() 의 getName()을 호출하면 현재 수행중인 메소드의 이름을 얻을 수 있음. String name = new Object() {}.getClass().getEnclosingMethod().getName(); 로그를 출력할 때 유용하게 이용하게 있긴 하지만, 오버헤드가 장난 아니기 때문에 실제 개발용으로는 비추.(안드로이드의 경우) 소스의 내용을 파악할 때 메소드마다 아래와 같이 한 줄씩 넣어주면 좋음. Log.d("MyTAG", new Object() {}.getClass().getEnclosingMethod().getName()); 단, 생성자에서는 이 코드를 호출할 수 없음! getEnclosingMethod 가 Null 이라 getEnclosing..
Android studio의 유용한 플러그인 안드로이드 스튜디오의 시대 안드로이드 스튜디오가 이클립스를 대신하여 안드로이드의 공식 개발 툴이 된지도 벌써 2년이 지났습니다. 아주 오래된 레거시 프로젝트를 제외하고는 거의 대부분 프로젝트가 안드로이드 스튜디오로 개발되는 시대입니다. 안드로이드 스튜디오의 플러그인 이클립스에서는 수많은 플러그인을 입맛대로 골라쓸 수 있어 굉장히 편리했습니다. 서버 개발자들도 이클립스를 많이 썼기 때문에, 이들이 플러그인을 많이 만들어서 올렸고 안드로이드 개발자들도 그 혜택을 누릴 수 있었습니다. 다행스럽게도 안드로이드 스튜디오, 정확하게는 Intelli J 도 플러그인을 지원합니다. 그리고 유용한 플러그인도 꽤 많습니다. 그 중 특히 더 유용한 플러그인을 한 번 모아보았습니다. 플러그인 설치 방법 먼저 안드로이드 스튜디..
[Google IO 2016] 안드로이드 스튜디오 2.2 소개 구글 IO 2016에서 안드로이드 스튜디오 업데이트가 발표되었습니다. 이제는 이클립스를 떠나 안드로이드 스튜디오로 갈 때가 된 것 같네요. 이미 상위 120여개 앱 중 95%가 안드로이드 스튜디오로 만들어지고 있다고하니, 안드로이드 스튜디오가 대세인 것 같습니다. 이번 세미나에서 언급된 주요 특징은 아래와 같습니다.- APK Analyzer를 이용한 분석 및 디컴파일 기능 (앱의 용량이 불필요하게 크지는 않은지, 이미지 리소스 확인, dex 파일 내용 보기 등)- C++ 디버깅 기능 (JNI를 이용하여 만든 라이브러리 내부까지 함께 디버깅. 이클립스에서 이걸 하려면 GDB 설정 등등... 꽤 번거로운 작업을 해주어야 했습니다)- 프로젝트에서 이용하고 있는 라이브러리 최신 버전으로 업데이트 기능 (Repo..