본문 바로가기
#1 안드로이드 취약점 분석 및 환경 소개 - 안드로이드 모바일 앱 모의해킹 1.1. 안드로이드 아키텍처 이해 1.1.1. 리눅스 커널 -안드로이드 운영체제는 일부를 구조적으로 변경한 리눅스 커널 2.6으로 구현되어 있다.이 레이어는 카메라, 오디오, 무선 와이파이, 키패드 드라이브 등과 같은 다양한 드라이버로 구성되어 있다. -안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트워크 스택 그리고 드라이버 모델과 같은 주요 시스템 서비스를 리눅스에 의존한다.또한 커널은 하드웨어와 소프트웨어 스택의 나머지 부분 사이에서 추상화 레이어 역할을 한다. 1.1.2. 라이브러리 -리눅스 커널 위에 있는 레이어는 안드로이드의 네이티브 라이브러리다.이 라이브러리는 C/C++ 언어로 작성되었다. -라이브러리들은 리눅스 커널 내에서 프로세스로 동작한다.라이브러리는 단지 장치에 여러 종류의 데이.. 2020. 11. 17.
[android] AsyncLayoutInflater tutorial https://developer.android.com/reference/androidx/asynclayoutinflater/view/AsyncLayoutInflater -androidx 에 포함되어 있다.inflate 하는 동안에도 UI 를 responsive 하게 가져갈 수 있다는 장점이 있음 -AsyncLayoutInflater(this).inflate(resId:Int, parent:ViewGroup, listener:OnInflateFinishedListener?) -AsyncLayoutInflater 의 단점은 아래와 같다.parent 의 generateLayoutParams() 가 thread-safe 해야 한다.모든 뷰가 Handler 를 생성하거나 Looper.myLooper() 함수를 호.. 2020. 8. 22.
[android] WorkManager 를 사용해보자 https://www.bignerdranch.com/blog/doing-work-with-androids-new-work-manager/https://developer.android.com/topic/libraries/architecture/workmanagerhttps://developer.android.com/reference/androidx/work/WorkManager -https://developer.android.com/jetpack/androidx/versions 글을 정리하는 20.07.14 시점에는 2.3.4 release 상태 -Google 이 2018 I/O 에서 WorkManager 라는 것을 발표했다.그 전에는 background task 를 수행하기 위해서는 여러가지 배경지식이 .. 2020. 8. 21.
[android] MultiDex 에 대한 이야기 https://developers.soundcloud.com/blog/congratulations-you-have-a-lot-of-code-remedying-androids-method-limit-part-1 https://developer.android.com/studio/build/multidex.html - DEX file 의 method index 는 16bit 로 제한되어 있다. 이는 2^16 인 65,536 갯수 이상의 method reference 를 가질 수 없다는 것이다. 이 숫자에는 android framework methods, library methods, 그리고 너의 코드에 있는 methods 를 포함한 것이다. 64K 가 많아보이지만, android support lib 을 비롯.. 2020. 8. 20.
[android] Define data using entities - Room 에 대해 알아보자 - Room 을 사용할 때 entity 들을 정의하게 된다. 각각의 entity 는 Database 의 table 에 매칭된다. Database class 에 entities array 로 제공하면 자동으로 생성된다. - @Entity data class User(@PrimaryKey var id:Int, var firstName:String?, var lastName:String?) - field 를 public 으로 만들거나, getter, setter 를 제공해주면 된다. getter, setter 를 사용할 경우, JavaBeans convention 을 따른다는 것을 알고 써야 한다. - Entity 는 empty constructor 를 가질 수도 있고, entity 의 field 들을 가질 .. 2020. 8. 19.
[android] Accessing data using Room DAOs - Room 에 대해 알아보자 - Dao 는 Room 의 메인 컴퍼넌트로, 각각의 DAO 는 app db 에 접근하는 추상적인 방법을 제공한다. 직접 query 하거나 queryBuilder 를 통해 data 에 접근하는 대신, 각각의 컴퍼넌트에 대해 분리된 접근을 할 수 있다. 게다가 DAO 는 test 를 위한 mock db access 를 제공하기가 쉬워진다. - DAO 는 interface 나 abstract class 가 될 수 있다. abstract class 라면, constructor 를 통해서 RoomDatabase 를 유일한 param 으로 받을 수 있다. Room 은 각각의 DAO 를 compile time 에 생성한다. - Room 은 builder 에서 allowMainThreadQueries() 를 호출하기 .. 2020. 8. 18.
[android] 기초 - Room 에 대해 알아보자 - Room 은 SQLite 의 추상화 layer 를 제공하는 lib 으로, SQLite 의 모든 기능을 사용하면서 더 견고한 db 접근을 할 수 있게 해준다. - Room 이 많은 부분을 케어해주기 때문에, SQLite 대신에 Room 을 사용하는 것이 강추된다. - Room 에는 3가지 컴퍼넌트가 있다. 1. Database DB holder 를 가지고 있으며, 앱의 relational 한 영구적인 data 에 접근하는 채널이 된다. @Database 로 annotate 된 class 는 다음 조건을 충족시켜야 한다. RoomDatabase 를 상속하는 abstract class 가 되도록 한다. db 에 들어갈 entity 들을 annotation 으로 정의해준다. @Dao 로 annotate 된 .. 2020. 8. 17.
[android] dpi 값이 바뀔 수 있구나?!! ㄷㄷㄷ -이슈를 치다가 activity popup 모드를 접하게 되면서 activity popup 모드에서 어떻게 UI 들을 작게 그리는지를 팀원과 이야기하게 되었다.팀원은 dpi 값이 줄어들 것이 명백하다라고 했고, 나는 그렇다면 popup 모드로 변환하면서 그럼 res 의 참조들도 변하는거냐? xxhdpi -> xhdpi 가 되는거냐? 라고 물었다. 그래서 나는 명백한지는 모르겠다고 의견을 개진했다. 처음에는 흥미가 없었는데 흥미가 생겨 테스트해보기로 했다. -일단 popup 화면으로 전환 / full screen 으로 전환시 activity 를 destroy 하고 recreate 한다.manifest 의 configChanges 에 density 를 걸어주면 recreate 되지 않는다. 단, 이 녀석은 .. 2020. 8. 15.
[android] 앱 업데이트시 다운로드 사이즈 줄이기 https://android-developers.googleblog.com/2016/12/saving-data-reducing-the-size-of-app-updates-by-65-percent.html -돼왕 : 참고로 링크 걸린 원글은 2016.12.06 글임을 참고하시길.. -2016년 초부터 bsdiff algorithm 을 사용하여 app update 시 과거와 비교하여 47% 정도의 apk download size 를 줄일 수 있었다.File-by-File patching 기술을 이용하여 평균적으로 앱 업데이트시 본 apk 사이즈에 비해 약 65% 정도 작은 사이즈를 내려보낼 수 있게 되었다. -새로운 버전을 다운로드 받을 때 Google Play 는 과거버전과 새로운 버전의 앱 사이의 dif.. 2020. 8. 14.
반응형