목록잡동사니 (159)
기록
안녕 나는 초등학교 1학년 8살이야. 내가 앱을 개발중인데, MVVM모델이라든지 Repoistory, Hilt(Dependency Injection), DTO 등등이 이해가 안돼. 특히 viewmodel얘 뭔일하는애인지도 모르겠고 데이터흐름도 하나도 이해가안돼 데이터를 담고 주고 하는데 콜백함수를 왜 클래스 인자로 주는지도 모르겠어안녕! 😊 8살인데 앱을 직접 개발하고 있다니 정말 대단해!어려운 말들이 많아서 헷갈릴 수 있는데, 아주 쉽게 설명해줄게. 우리 같이 "앱이 어떻게 말하고 일하는지" 이야기처럼 이해해보자! 🌳 앱을 하나의 마을로 생각해보자!등장인물이름하는 일비유View화면에 보여주는 친구TV 화면ViewModel화면에게 필요한 정보를 전달하는 친구비서Repository데이터들을 모아주는 친..
git fast-forward는 Git에서 브랜치를 병합(merge) 할 때 발생하는 특별한 형태의 병합 방식이야. 이해하기 쉽게 설명해줄게. 🔧 한 줄 요약fast-forward 병합은 브랜치의 히스토리를 단순히 앞으로 '이동'시키는 병합 방식이야.새 커밋이 만들어지지 않고, 그냥 포인터만 옮겨짐. 📌 상황 예시* commit A ← main|* commit B ← featuremain 브랜치에서 갈라져 나온 feature 브랜치가 commit B까지 작업을 끝냈어.main에서는 아무 작업도 안 했어.이때 feature를 main에 병합하면? ✅ Fast-forward 병합git checkout maingit merge feature main 브랜치가 단순히 commit B를 가리키게 이동해.새..
AOSP(Android Open Source Project) 구조는 우리가 흔히 Android Studio에서 쓰는 Gradle 기반 프로젝트와는 완전히 다르게 구성돼. 전체 시스템 빌드(커널, 부트로더, 시스템 앱 등 포함)를 Make 기반 빌드 시스템으로 다루는 게 핵심이야. ✅ AOSP 구조 핵심 요약AOSP는 **"운영체제 전체"**를 빌드하기 위한 구조야.보통 아래와 같은 상위 디렉토리 구조를 갖고 있어:AOSP/├── build/ # 빌드 시스템 관련 스크립트├── system/ # 시스템 프레임워크 및 서비스├── packages/ # 시스템 앱 및 샘플 앱들│ └── apps/ # 앱 디렉토리..
좋아! 그러면 AOSP 구조 변환을 "Gradle 기반 Android 프로젝트 → AOSP Native App으로 옮기기" 라는 관점에서 아주 쉽게 풀어줄게.너는 이미 Android Studio에서 Gradle 기반 앱을 만들었잖아?근데 AOSP에서는 Gradle을 안 써. Android.mk 또는 Android.bp로 빌드해 🚧 너가 만든 프로젝트 요약 (현재 상태)위치설명app/src/main/AndroidManifest.xml앱의 메타 정보app/src/main/java/com/ivi/app/network/...소스 코드app/src/main/res/이미지, XML 등 리소스build.gradle(❌ AOSP에선 안 씀) 📦 AOSP에서는 어떻게 되어 있어야 하냐?AOSP에서는 Gradle 말..
✅ 홈화면 앱 구성 정리📦 트랙터 관련 앱트랙터 설정트랙터 관리트랙터 정보📦 미디어 관련 앱라디오미디어 (USB 등)📦 기타 설정 앱네트워크모니터 설정 ✅ 목표이들을 각각 독립적인 앱으로 개발 (APK 단위)다만, 언어 설정, 밝기, 사운드 설정 등은 공통이므로앱 간 설정 동기화가 필요함 ✅ 전체 S/W 아키텍처 설계 방안1. 앱 구조 (디렉터리/모듈)/apps ├─ tractor-settings ├─ tractor-management ├─ tractor-info ├─ radio ├─ media ├─ network ├─ monitor-settings └─ launcher (메인화면)각각 독립된 Android 앱으로 구성 (AndroidManifest.xml 포함) 2. 공통 설정 ..
wrapper는 Java, Gradle, JNI 등 여러 환경에서 자주 등장하는 단어인데,**"무언가를 감싸서 간접적으로 실행하거나 관리하는 도구"**를 뜻합니다.상황에 따라 의미가 조금씩 다르지만 **공통된 핵심 역할은 "추상화 + 통제"**입니다.각각 설명해드릴게요: 💡 1. Gradle Wrapper (./gradlew)당신이 지금 본 Executing tasks: [wrapper]은 Gradle Wrapper 설정 작업이에요.✅ 역할:프로젝트에 Gradle 실행기를 내장해서, 누가 빌드하든 동일한 Gradle 버전을 쓰게 해줌.로컬에 Gradle 안 깔려 있어도, ./gradlew가 자동으로 다운로드 및 실행함..gradle, gradlew, gradlew.bat, gradle-wrapper...
SOLID 원칙은 객체지향 설계에서 유지보수성과 확장성을 높이기 위한 5가지 원칙을 말합니다. 각 원칙은 클래스, 모듈, 함수 등을 어떻게 설계해야 하는지를 안내해줍니다.✅ 1. SRP (Single Responsibility Principle) - 단일 책임 원칙한 클래스는 하나의 책임만 가져야 한다.즉, 클래스는 하나의 변화 이유만 가져야 한다.📌 기능 A와 B를 한 클래스에 넣으면, A 변경이 B에 영향을 줄 수 있음.// 위반 예시class Report { void generate() {} void print() {} // 출력 로직도 포함 → SRP 위반}// 개선class ReportGenerator { void generate() {}}class ReportPrinter ..
💡 Smart Recomposition 한 줄 요약변한 부분만 똑똑하게 다시 그리는 것! 📱 예를 들어볼게@Composablefun Greeting(name: String) { Text("Hello $name!")}이런 코드에서 만약 name 값이 "Alice"였다가 "Bob"으로 바뀌면Compose는 전체 화면을 다시 그리는 게 아니라Text("Hello $name!") 이 부분만 다시 그려줘요.이게 바로 Smart Recomposition이에요! 🤖 Compose는 어떻게 알까?Compose는 내부에서 다음을 기억하고 있어요:"이 부분은 name이라는 상태에 의존하고 있어""name이 바뀌면 이 Text만 다시 그리면 돼"그래서 효율적으로, 필요한 부분만 다시 그림→ 앱이 빠르고 부드럽..