Android project migration to platforms/android

This commit is contained in:
2025-09-28 04:22:53 +09:00
parent 484e4e0338
commit ce99a6b3d3
58 changed files with 169 additions and 16 deletions

11
.gitignore vendored
View File

@@ -378,8 +378,15 @@ output.mp4
# 그럴 경우 이 줄을 주석 처리하거나 더 구체적인 경로를 지정해야 합니다.
*.a
*.so
/vav2/Vav2Player_Android/vavcore/build/
/vav2/godot_extension/libs/
# Current platform structure
/vav2/platforms/windows/applications/vav2player/packages/
/vav2/platforms/windows/godot-plugin/libs/
/vav2/platforms/windows/vavcore/lib
/vav2/platforms/windows/vavcore/lib/
/vav2/platforms/android/applications/vav2player/vavcore/build/
/vav2/platforms/android/applications/vav2player/.gradle/
/vav2/platforms/android/applications/vav2player/build/
# Symbolic links and junctions (platform-specific src directories)
# Git will track symlinks as special files, which is the desired behavior

View File

@@ -53,7 +53,32 @@ size_t required_size = frame.width * frame.height * 4;
---
## ✅ **최신 완료 작업: VavCore DLL 통합 테스트 완료** (2025-09-28)
## ✅ **최신 완료 작업: Android 플랫폼 구조 재정리 완료** (2025-09-28)
### **Android 플랫폼 구조 통일 성공**
- Android 플랫폼을 Windows와 동일한 구조로 완전 재정리 ✅
- `Vav2Player_Android/``platforms/android/applications/vav2player/` 이동 완료 ✅
- `include/`, `libs/``vavcore/` 하위로 통합 완료 ✅
- `android_test.cpp``tests/native/` 이동 완료 ✅
- 모든 CMakeLists.txt 경로 업데이트 완료 ✅
- 기존 `Vav2Player_Android/` 디렉토리 정리 완료 ✅
### **통일된 플랫폼 구조**
```
platforms/
├── windows/ # Windows 플랫폼
│ ├── applications/vav2player/
│ ├── vavcore/
│ ├── tests/
│ └── godot-plugin/
└── android/ # Android 플랫폼 (동일 구조)
├── applications/vav2player/
├── vavcore/
├── tests/
└── godot-plugin/
```
## ✅ **이전 완료 작업: VavCore DLL 통합 테스트 완료** (2025-09-28)
### **VavCore DLL 통합 성공**
- VavCore DLL P/Invoke 연결 완전 검증 ✅

View File

@@ -10,48 +10,48 @@ endif()
# Set library directory based on ABI
if(ANDROID_ABI STREQUAL "arm64-v8a")
set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/arm64-v8a")
set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vavcore/libs/arm64-v8a")
elseif(ANDROID_ABI STREQUAL "armeabi-v7a")
set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/armeabi-v7a")
set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vavcore/libs/armeabi-v7a")
else()
message(FATAL_ERROR "Unsupported Android ABI: ${ANDROID_ABI}")
endif()
# Include directories
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/vavcore/include)
# Import dav1d as prebuilt library
add_library(dav1d SHARED IMPORTED)
set_target_properties(dav1d PROPERTIES
IMPORTED_LOCATION ${LIB_DIR}/libdav1d.so
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/include
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/vavcore/include
)
# Also provide static library option
add_library(dav1d_static STATIC IMPORTED)
set_target_properties(dav1d_static PROPERTIES
IMPORTED_LOCATION ${LIB_DIR}/libdav1d.a
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/include
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/vavcore/include
)
# VavCore sources for Android
set(VAVCORE_ANDROID_SOURCES
# Common VavCore sources (only .cpp files)
../../VavCore/src/Decoder/VideoDecoderFactory.cpp
../../VavCore/src/Decoder/AV1Decoder.cpp
../../VavCore/src/FileIO/WebMFileReader.cpp
vavcore/src/Decoder/VideoDecoderFactory.cpp
vavcore/src/Decoder/AV1Decoder.cpp
vavcore/src/FileIO/WebMFileReader.cpp
# Android-specific sources
../../VavCore/src/Decoder/AndroidMediaCodecAV1Decoder.cpp
vavcore/src/Decoder/AndroidMediaCodecAV1Decoder.cpp
# Test/example sources
src/android_test.cpp
tests/native/android_test.cpp
)
# Include directories for VavCore
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../VavCore/src
${CMAKE_CURRENT_SOURCE_DIR}/../../VavCore/include
${CMAKE_CURRENT_SOURCE_DIR}/vavcore/src
${CMAKE_CURRENT_SOURCE_DIR}/vavcore/include
)
# Add platform-specific preprocessor definitions

View File

@@ -26,7 +26,7 @@ add_compile_definitions(ANDROID)
add_compile_definitions(__ANDROID_API__=${ANDROID_NATIVE_API_LEVEL})
# VavCore source directory (relative to this CMakeLists.txt)
set(VAVCORE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../VavCore)
set(VAVCORE_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
# Include directories
include_directories(

View File

@@ -0,0 +1 @@
../../windows/vavcore/src

120
vav2/todo10.txt Normal file
View File

@@ -0,0 +1,120 @@
📋 제안사항 분석 및 검토
🎯 현재 Android 구조
platforms/android/
├── build.gradle # 루트 빌드 설정
├── CMakeLists.txt # 네이티브 빌드
├── godot-plugin/ # Godot 플러그인
├── include/dav1d/ # 헤더 파일들
├── libs/ # 라이브러리들
├── src/android_test.cpp # 테스트 앱
└── vavcore/ # VavCore 빌드 설정
├── build.sh
└── CMakeLists.txt
🎯 제안된 새 구조
platforms/android/
├── vavcore/ # VavCore 라이브러리 (통합)
│ ├── include/ # 헤더 파일들 (이동)
│ ├── libs/ # 라이브러리들 (이동)
│ ├── build.sh
│ └── CMakeLists.txt
├── godot-plugin/ # Godot 플러그인 (유지)
├── applications/ # Android 애플리케이션들 (신규)
│ └── vav2player/ # Vav2Player_Android 이동
├── tests/ # 테스트들 (신규)
│ └── native/ # 네이티브 테스트
│ └── android_test.cpp
└── build.gradle # 루트 빌드 설정
✅ 제안사항 장점 분석
🎯 1. 플랫폼 일관성
✅ 매우 좋음 - Windows와 완전히 동일한 구조:
platforms/{platform}/
├── vavcore/ # 핵심 라이브러리
├── applications/ # GUI 앱들
├── godot-plugin/ # Godot 확장
└── tests/ # 모든 테스트
🎯 2. Android 표준 호환성 검토
✅ 표준 Android 프로젝트 구조와 호환됨
typical-android-project/
├── app/ # 메인 애플리케이션
├── library-modules/ # 라이브러리 모듈들
├── build.gradle # 루트 빌드 설정
└── settings.gradle # 프로젝트 설정
제안된 구조는 Android 표준을 잘 따름:
- applications/vav2player/ = 표준 app/ 모듈
- vavcore/ = 표준 라이브러리 모듈
- godot-plugin/ = 다른 라이브러리 모듈
✅ Gradle 멀티모듈 프로젝트 패턴
// settings.gradle
include ':applications:vav2player'
include ':vavcore'
include ':godot-plugin'
🎯 3. 빌드 시스템 호환성
✅ CMake/NDK 표준 구조
vavcore/
├── include/ # 표준 C++ 헤더 위치
├── libs/ # 표준 라이브러리 위치
└── CMakeLists.txt # 표준 CMake 설정
✅ Android.mk/Application.mk 호환
- include/ 경로는 LOCAL_C_INCLUDES에서 표준적으로 사용
- libs/ 경로는 LOCAL_SHARED_LIBRARIES 표준 위치
🎯 4. 테스트 구조 개선
현재: 테스트가 src/ 에 혼재
제안: 명확한 테스트 분리
tests/
├── native/ # C++ 네이티브 테스트
├── unit/ # 유닛 테스트
└── integration/ # 통합 테스트
⚠️ 잠재적 고려사항
🔍 1. 빌드 스크립트 수정 필요
- CMakeLists.txt 경로 참조 업데이트 필요
- build.gradle 프로젝트 구조 재설정 필요
🔍 2. 기존 의존성 체크
- Godot 플러그인의 현재 경로 참조 확인 필요
- 다른 빌드 스크립트들의 Android 경로 참조 확인
🎯 최종 권장사항
✅ 적극 추천!
제안하신 구조는:
1. ✅ 플랫폼 일관성: Windows와 완벽하게 일치
2. ✅ Android 표준: Android 표준 프로젝트 구조와 완전 호환
3. ✅ 확장성: 향후 iOS/Linux 추가 시 동일한 패턴 적용 가능
4. ✅ 유지보수성: 플랫폼별 구조가 예측 가능하고 직관적
🛠️ 구현 순서 제안
1. applications/vav2player/ 디렉토리 생성 및 Vav2Player_Android 이동
2. vavcore/include/, vavcore/libs/ 디렉토리 생성 및 파일 이동
3. tests/native/ 디렉토리 생성 및 android_test.cpp 이동
4. 빌드 스크립트들 경로 업데이트
5. 테스트 빌드 및 검증
이 구조 변경을 진행해보시겠습니까? 🚀