NDK(Native Development KIT) - C와 C++과 같은 네이티브 코드로 작성된 안드로이드 애플리케이션을 개발하기 위한 도구 모음 - 안드로이드 애플리케이션에 C와 C++ 코드를 쉽게 통합할 수 있음 -> 더 높은 성능이 필요한 애플리케이션 개발 가능함. - SDK와 함께 제공되며, CMake와 같은 빌드 시스템과 함께 사용 가능함 - 자바 이외의 네이티브 코드를 사용하기 위해 JNI 인터페이스가 존재해야 함 ※ CMake : Gradle과 함께 작동하여 네이티브 라이브러리를 빌드하는 외부 빌드 도구이다. ※ LLDB : Android studio에서 네이티브 코드를 디버깅할 때 사용하는 디버거이다. NDK가 필요한 경우 - 기기의 성능을 최대한 활용하여 짧은 시연 시간을 구현해야 함 -..
JNI - Java Native Interface의 약자이다. - Java에서 네이티브 코드(C, C++, ASM 등)를 호출하고, 네이티브 코드에서 Java 메서드를 호출할 수 있게 해주는 프로그래밍 인터페이스이다. - JNI를 사용하면 Java와 네이티브 코드 간의 상호 운용성을 제공할 수 있다. - Java는 플랫폼 독립적인 언어이기 때문에, 네이티브 코드를 직접 호출할 수 없다. JNI 특징 - JNI를 사용하면 Java와 네이티브 코드 간의 인터페이스를 정의한다. - Java에서 네이티브 코드를 호출할 수 있다. - 네이티브 코드에서 Java 객체를 생성하고, Java 메서드를 호출할 수 있다. JNI의 활용성 - 이미 작성된 C/C++ 라이브러리를 Java에서 사용해야 하는 경우 - 성능이 중..
Java - 객체 지향 프로그래밍 언어이다. - 1995년에 오라클에서 발표되었으며, 개발자들에게 많은 관심과 인기를 얻었다. Java 특징 - 플랫폼 독립성 : 운영체제나 하드웨어와 상관없이 실행될 수 있다. Java 컴파일러가 Java 코드를 바이트코드라는 중간 형태로 변환하고 JVM(Java Virtual Machine)이 이를 해당 운영체제에 맞게 해석하여 실행하기 때문이다. - 안전성과 보안성이 높은 언어 : 예외 처리와 가비지 컬렉션 같은 기능이 있어서 프로그램이 더욱 안정적이고 오류가 적은 형태로 실행될 수 있다. 또한 다양한 라이브러리와 프레임워크가 존재하여, 개발자들이 더욱 빠르고 쉽게 애플리케이션을 개발할 수 있도록 도와준다. - 다양한 분야에서의 사용 : 서버 애플리케이션, 모바일 애..
디컴파일(Decompile) - 컴파일된 코드를 원래 소스 코드로 변환하는 것 - 컴파일된 바이너리 코드를 읽을 수 있는 원시 코드로 분해하는 작업이다. - 디컴파일(Decompile) 또는 역컴파일(Reverse Compilation)이라고도 불린다. - 애플리케이션의 APK 파일에서 리소스 파일, 매니페스트 파일, 코드 등을 추출하여 원시 코드로 변환하는 작업이다 - 개발자는 다른 애플리케이션의 코드와 리소스를 분석하거나 애플리케이션의 동작 방식을 이해하는 데 도움을 얻을 수 있다. 1. 내부 파일을 확인만 해볼 경우 - apk에서 jar 파일로 변환 - jar 파일 확인 2. 파일을 수정하고 앱 재빌드 하는 경우 - APK 압축 풀기 - dex에서 jar 파일로 변환 - jar 파일 확인 - 파일 ..
APKTool - 안드로이드 애플리케이션의 디컴파일 및 리컴파일 도구이다. - 안드로이드 애플리케이션의 APK 파일에서 리소스 파일, 매니페스트 파일 등 추출하여 살펴볼 수 있다. - 애플리케이션의 리소스 파일을 수정하고 다시 패키징하여 애플리케이션을 변경할 수 있다. - Java로 작성되어 있으며, 명령줄 인터페이스를 통해 사용할 수 있다 - 애플리케이션 개발자들이 다른 애플리케이션의 코드 및 리소스를 살펴보거나 애플리케이션을 수정하는 데 유용하게 사용할 수 있다. - 취약점 분석 및 보안 검사 등의 목적으로도 사용된다.
안드로이드(Android)란? 구글이 개발한 모바일 운영 체제이다. 스마트폰, 태블릿, 스마트 워치 등 다양한 기기에 사용된다. Linux 기반으로 작동하며, Java와 Kotlin 등 프로그래밍 언어를 사용하여 Application을 개발할 수 있음 전 세계적으로 가장 많이 사용되는 모바일 운영 체제 중 하나이다. 또한, 개방형 플랫폼이기 때문에 개발자들이 쉽게 앱을 개발하고 배포할 수 있다. 안드로이드 특징 1. Java 기반 - 개발할 때 사용하는 언어는 자바이다. 따라서 다양하고 쉽게 개발에 접근 가능하다. 2. Open Source - 오픈소스를 기반으로 하고 있으며 Apache 2.0 라이선스를 사용한다. 3. 완벽한 Component - 핵심적인 커널 부분만 제공하는 것이 아니라 제공된 소스..