Android - 이론


1. Boot ROM : 파워 버튼을 누르면, ROM 내부의 Boot ROM 코드가 실행된다. -> RAM으로 Bootloader의 첫 번째 단계를 로드한다. 2. Bootloader : 커널을 디바이스로 불러오는 역할을 하는 프로그램이다. 커널을 디바이스로 불러오는 역할을 하는 프로그램이다. 운영체제 시작 전 장치가 어떻게 시작하는지 알려주고 kernel을 찾는 명령어를 가진 low-level 코드이다. 커널을 실행하기 위해 필요한 보드나 프로세서, 시계, 키패드, 네트워크, 메모리 등을 셋업하는 역할을 한다. Ram(메모리) 초기화, HW 초기화한다. kernel과 Ramdisk를 RAM으로 올린다. (kernel 시작 지점으로 점프해서 kernel을 시작시킨다.) Bootloader는 비휘발성 메모..


1. JNI란? JNI(JAVA Native Interface)는 JVM에서 동작할 때, 네이티브 언어로 작성된 코드를 자바에서 사용하거나, 네이티브 언어에서 자바의 클래스와 메소드를 사용할 수 있게 해주는 프로그래밍 인터페이스이다. - Native Code에 접근하기 위한 API이다. 1. JNI를 통해 자바로 개발한 소프트웨어는 유연한 플랫폼 활용도를 유지하면서 자바만으로는 구현하기 어려운 것들을 구현할 수 있다. 2. JNI는 라이브러리가 아니라 인터페이스이기 때문에 인터페이스 규칙에 따라서 자바의 메소드와 C, C++의 함수를 정의함으로써 자바와 C, C++ 서로 간에 함수를 호출할 수 있다. - 자바는 JVM을 사용하여 플랫폼에 상관없이 읽고 실행할 수 있지만, 네이티브 코드 사용이 필요한 순간..


자바 : 안드로이드에서 사용하는 기본 언어이다. - 운영체제와 통신하고 하드웨어를 직접 사용하는 응용 프로그램이 주로 자바를 사용한다. 1. 객체 지향적이다. : 코드 재사용에 유리하고, 신뢰성 있는 소프트웨어를 손쉽게 작성할 수 있다. 2. 운영체제에 독립적이다. : 운영체제나 하드웨어가 아닌 JVM하고만 통신하기 때문에 운영체제와 하드웨어에 관계없이 실행이 가능하다. -> 어디에서나 실행이 가능하다. 1. C+ 또는 파이썬과 같은 다른 언어와 비교할 때 약간 복잡하거나 번거롭다. 2. 사용 중인 장치 또는 장비와 호환되지 않을 수 있으며, 특정 콘텐츠에 액세스하는 것이 불가능하다. 3. 모바일 개발에서 새로운 자바 개선 사항에 액세스하는 것이 쉽지 않다. 4. 다른 프로그래밍 언어에 비해 약간 느리고..


1. apktool이란? : 안드로이드 어플리케이션의 APK 파일을 디컴파일하여 리소스 파일과 소스 코드를 추출하는 데 사용되는 오픈 소스 도구이다. - 난독화가 수행된 안드로이드 앱의 개발 코드를 원복 수준의 형태로 되돌릴 수 있게 도와주며, 앱을 다시 설치하여 실행시킬 수 있게 도와주는 역공학 도구이다. -> 이 도구 사용하면 거의 오리지널 코드에 가깝게 디컴파일 할 수 있다. +) 역공학(리버스 엔지니어링) : 프로그램을 복제하거나 기능 향상, 유지보수 등을 위해 분해해보는 과정이다. (역공학 단계에서 중요한 역할을 하는 것이 디컴파일 과정) - AKP? : 안드로이드 플랫폼에서 어플리케이션 설치를 위해 배포되는 패키지 파일이다. - ZIP 파일 포맷 형태로 구성되어 있으며, 다양한 구성 요소들을 ..


1. 안드로이드란? : 구글에서 만든 스마트폰용(터치스크린 모바일 장치 용) 운영체제이다. - 수정된 리눅스 커널 버전을 비롯한 오픈 소스 소프트웨어에 기반을 둔 모바일 운영체제이다. -> 운영체제와 미들웨어, 사용자 인터페이스, 어플리케이션, MMS 서비스 등을 하나로 묶어 서비스를 제공한다. - 어플리케이션 플랫폼이기도 하다.(다양한 어플리케이션을 만들어 설치 및 실행 가능) - 리눅스를 기반으로 제작 -> 리눅스 커널 위에서 동작한다. - 자바와 코틀린 언어로 응용 프로그램 작성 가능하다. -> 앱을 만들어 동작한다. - 안드로이드 시스템 구성 요소에서 사용되는 C/C++ 라이브러리들을 포함한다. - 안드로이드 런타임이라는 가상 머신을 통해 자바와 코틀린으로 작성된 응용 프로그램을 별도의 프로세스에..