목록2025/12 (11)
기록
좋아요 👍 완전 깔끔하게 새로 시작할 준비가 된 거네요.이제 Android용 Fast-DDS 전체 빌드 세트 (Fast-CDR, foonathan_memory, tinyxml2, Fast-DDS) 를 새로 clone부터 install까지 순서대로 진행합시다.🚀 전체 클린 빌드 절차 (Android NDK 환경)⚙️ 환경 변수 확인export ANDROID_NDK=~/TOOLS/android-ndk-r27dexport JOBS=$(nproc)mkdir -p ~/PROJECTS/fastdds-joo && cd ~/PROJECTS/fastdds-joo① Fast-CDRgit clone https://github.com/eProsima/Fast-CDR.gitcd Fast-CDRmkdir build-andro..
https://proandroiddev.com/as-an-interviewer-i-asked-these-android-questions-can-you-answer-them-d623472568f7좋아요좋아요 👍 아래는 당신이 처음에 보여준 원문(영문 설명) 전체를 자연스럽게 한국어로 번역한 버전이에요.영문 구조를 그대로 유지하면서도 읽기 쉽게 풀었습니다.🧾 원문 번역실제 실행 결과A C B코루틴은 종종 “non-blocking(비블로킹)”이라고 설명됩니다.왜냐하면 실제로 스레드를 막지 않고 동작하기 때문이에요.그래서 코루틴 스코프를 열고 코드를 실행해도,메인 스레드가 멈추는 것이 아니라 내부의 코루틴 스케줄러가 작업을 비동기적으로 처리합니다.이런 관점에서 보면,c가 먼저 실행될 것처럼 보이기도 하죠.하..
HAL은 아주 거칠게 말하면:“커널/드라이버(하드웨어)랑 Android 세계(Framework/앱)를 이어주는 C/C++ 어댑터 레이어”라고 생각하면 돼.지금 네 DDS 구조에 딱 끼워보면 이렇게야:[ DDS 드라이버 / DDS 백엔드 ] ← (보드, OS 쪽 구현) ↑ [ HAL (HIDL) ] ivi.system.ccs.dds.ipc@1.0::IDDS ↑ [ dds_svc 데몬 ] ↑ [ Android 앱 (AIDL) ]1. HAL이 정확히 뭐 하는 놈이냐Android 기준으로 HAL은:인터페이스 정의(HIDL/AIDL)예: IDDS.hal / IDDS.h 같은 HIDL 인터페이스registerCommand(), se..
좋아, **FCM mismatch(Framework Compatibility Matrix mismatch)**를 아주 쉽게, 너가 지금 작업 중인 Telechips Android 빌드 맥락에 맞게 설명해줄게.🔥 FCM mismatch란?Android 시스템이 “framework 쪽 요구사항”과 “device/vendor 쪽 선언”이 서로 맞지 않는 상황을 말해.즉,framework(시스템): 이런 HAL들이 있어야 한다고 요구함device/vendor manifest: 실제로 포함된 HAL 목록둘의 목록이 서로 안 맞음 → mismatch 발생그래서 빌드를 막아버리는 오류야.📌 왜 이런 제도가 생겼냐?Android는 Vendor(SoC 제조사) / Device 제조사 / Google(Android F..
오케이 joo, DDS 제대로 감 잡을 수 있게LazyColumn 자동 스크롤,차량에서 DDS 어떻게 쓰는지,PC ↔ 보드 통신 구조,어디에 쓰이는 기술인지 (자동차? 국방?)전부 깔끔하게 정리해서 설명해줄게.✅ 1. “차량에서 DDS는 연속적으로 데이터 보내는가?”맞음. 거의 100% 연속 스트리밍 형태야.대표적인 차량 DDS 데이터 예:차량 속도 (10~100Hz)엔진 회전수 (10~50Hz)조향각 (50~100Hz)차간 거리 (20~50Hz)레이더, 카메라 객체 리스트 (10~30Hz)자율주행용 센서 융합 데이터 (30~100Hz)즉 DDS는 ‘실시간 스트리밍 버스’ 같은 느낌이다.반면 CAN은 고정된 ID 기반 프레임 송수신이지만, DDS는 Topic + QoS 기반 고성능 스트리밍.✅ 2. La..
좋다. 이 질문을 제대로 이해하면 Android 시스템 아키텍처의 절반을 이해한 것과 같다.바로 설명 들어갈게.이건 DDS 연동뿐 아니라 앞으로도 계속 쓰이는 개념이야.🎯 AIDL 파일을 가져오는 이유 = 시스템 서비스와 앱이 “Binder IPC”로 통신하기 위해서🔥 핵심 한 줄AIDL은 “시스템 서비스와 앱 사이의 인터페이스(약속)”를 정의하는 파일이다.즉,앱 ↔ 시스템 서비스(dss_svc)앱 ↔ 안드로이드 프레임워크 서비스(LocationManager 같은)앱 ↔ 다른 앱이런 IPC(프로세스 간 통신)를 Binder 기반으로 하기 위해 “함수들, 매개변수 타입들, 콜백 구조”를 정의하는 프로토콜이 필요함.그게 바로 AIDL.📌 1. AIDL은 "약속된 인터페이스를 정의하는 문서(프로토콜)"예..
Joo야, 너무 잘 물어봤다. “JVM 언어”가 뭔지 알면 Java·Kotlin·Android가 어떻게 돌아가는지 한 방에 이해됨.🧠 JVM 언어란?JVM(Java Virtual Machine) 위에서 실행되는 언어를 말해.즉,✔ Java 코드✔ Kotlin 코드✔ Scala✔ Groovy✔ Clojure… 같은 것들이 모두 JVM 위에서 돌아가는 언어들이야.🧩 그럼 JVM이 뭐냐?컴퓨터가 직접 실행하는 게 아니라, JVM이라는 “가상 머신”이 대신 실행해주는 환경이야.Kotlin / Java 코드 ↓ 컴파일 Bytecode (.class) ↓ 실행 JVM 이 실행해줌즉, OS(리눅스/안드로이드/윈도우)가 아니라JVM이라는 통역기(Interpreter)가 코드를..
JNI 쪽 개발할 때 자주 보게 되는 jniLib(또는 jniLibs)는 안드로이드에서 **Native 라이브러리(.so 파일)**을 앱 안에 포함시키기 위해 사용하는 폴더/개념이야.아주 쉽게 말하면:✅ 📌 jniLib = 앱 안에 포함된 .so 네이티브 라이브러리 묶음🔍 1. JNI(Java Native Interface)란?안드로이드 앱(Java/Kotlin)이C/C++ 코드(NDK)를 호출하기 위해 존재하는 인터페이스.즉:Java → JNI → C/C++(.so) 라이브러리 호출이 구조로 돌아간다.🔍 2. jniLibs 폴더란?안드로이드 스튜디오 앱 프로젝트 내부에서 다음 경로에 존재:app/src/main/jniLibs/이 폴더 아래 ABI별 폴더를 넣어:jniLibs/ ├── arm64-v..