Android project migration to platforms/android
11
.gitignore
vendored
@@ -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
|
||||
|
||||
@@ -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 연결 완전 검증 ✅
|
||||
|
||||
@@ -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
|
||||
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 982 B After Width: | Height: | Size: 982 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
@@ -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(
|
||||
|
||||
1
vav2/platforms/android/vavcore/src
Symbolic link
@@ -0,0 +1 @@
|
||||
../../windows/vavcore/src
|
||||
120
vav2/todo10.txt
Normal 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. 테스트 빌드 및 검증
|
||||
|
||||
이 구조 변경을 진행해보시겠습니까? 🚀
|
||||