Upgrade to Pro — share decks privately, control downloads, hide ads and more …

신입 안드로이드 개발자의 AI 스타트업 생존기 (+ Native C++ Code를 ...

신입 안드로이드 개발자의 AI 스타트업 생존기 (+ Native C++ Code를 Android에서 사용해보기)

Doyeop Kim

March 16, 2025
Tweet

Other Decks in Programming

Transcript

  1. Korea Android 신입 안드로이드 개발자의 AI 스타트업 생존기 (+ Native

    C++ Code를 Android에서 사용해보기) 김도엽 ZETIC.ai super.init(version=6)
  2. ZETIC.ai 합류 아이템 좋아 보임 당장 먹고 살아야함 졸업 후

    공백 싫음 처우 나쁘지 않아 보임 취업 안됨 (서류 0합)
  3. ZETIC.ai 합류 아이템 좋아 보임 당장 먹고 살아야함 졸업 후

    공백 싫음 취업 안됨 (서류 0합) 사실 별 생각 없음! 처우 나쁘지 않아 보임
  4. ʻ내가 모르는 것’이 아니라 ʻ내가 알고 있는 것’에 집중하자 게임

    개발 C++, 컴퓨터 공학, 최적화, 디버깅, CMake, 빌드 안드로이드 개발 설계, Kotlin, Android, JNI 온디바이스 AI 추론 서비스 개발! + 기초적인 인공지능 지식
  5. ZETIC.ai에서 나는.. Segmentation Fault요? “우리도 결국엔 usability 확장을 지금 당장

    LLM만 우선적으로 hugging face support달고있지만, 여러모델들 지난번 도엽님이 whisper모델 한것처럼 다 huggingface에서 출발할 수 있게도 좀 봐야할것 같아요” memcpy(), malloc() 너 나가 객체지향..? 클린 코드..? 함수형..? 어이 김씨 거기 메모리 누수나 막아 그러니까 Quantization이 뭐냐면.. 오 어제 한명 접속했어요
  6. 온디바이스 AI의 기술적 요구사항 1. 클라우드가 아닌 디바이스에서 AI 모델

    실행 2. 고성능 모델의 최적화 필요 3. 컴퓨팅 자원의 제한적 사용 4. C++로 작성된 외부 라이브러리 사용 웬만한 일은 C++에서!
  7. CMake 1. 빌드 파일 자동 생성 2. MakeFile, Visual Studio

    Solution, XCode 용 빌드 파일 생성도 지원 3. Gradle에서 지원 4. https://cmake.org/ CMakeLists.txt
  8. Android NDK (Native Development Kit) 1. Android에서 C, C++ 코드를

    사용할 수 있게 해주는 일련의 도구 모음 2. 네이티브 코드 빌드, 실행 3. JNI를 통해 Java(Kotlin) 코드와 상호작용 4. Java GC 관리 대상 아님
  9. JNI (Java Native Interface) 1. JNI는 Java와 네이티브 코드(C/C++) 간의

    상호작용을 위한 인터페이스 2. Java VM (Dalvik/ART)과 네이티브 코드 간의 함수 호출 규약 정의 3. Java 객체 생성 및 조작 4. Java <-> Native 간 데이터 변환 (Marshalling & Unmarshalling) 5. 네이티브 스레드 연결 6. JNIEnv 구조체
  10. 함수 호출 규약 Java 코드와 C/C++ 코드 간에 상호작용을 가능하게

    하는 인터페이스 제공 Java_<패키지명>_<클래스명>_<메서드명>
  11. JNIEnv 구조체 1. Java 객체 생성, 조작 2. Java 객체

    참조 관리 (LocalRef, GlobalRef, WeakGlobalRef) 3. Marshalling & Unmarshalling 4. 네이티브 스레드 연결
  12. C++ 쓰면 다 되는거 아닌가요? 1. Java <-> 네이티브 코드

    데이터 변환도 비용이 발생한다. 2. Java의 GC는 네이티브 코드에서 할당한 메모리는 해제하지 못한다. 3. 반대로 네이티브에서 해제된 메모리에 접근 할 위험도 존재 a. 메모리 생명주기 관리