- Android Gradle Plugin 7.1.3과 호환 문제로 compileSdk 36 → 34로 변경
- targetSdk도 34로 변경
- FTPFileSystem에서 final 필드 rootDirectory에 두 번 할당하는 버그 수정
* getDefaultRootDirectory() 헬퍼 메서드로 로직 분리
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- RETR 명령어 구현: 파일 다운로드
* 파일 존재 여부 확인
* 데이터 연결을 통한 파일 스트림 전송
* 전송 바이트 수 로깅
* 에러 처리 및 연결 자동 종료
- STOR 명령어 구현: 파일 업로드
* 현재 디렉토리에 파일 생성
* 데이터 연결을 통한 파일 스트림 수신
* 전송 완료 후 파일 크기 확인
* 에러 처리 및 연결 자동 종료
- 두 명령어 모두 PASV 선행 필수
- FileInputStream/FileOutputStream을 사용한 스트림 처리
- 전송 성공/실패에 따른 적절한 응답 코드 반환
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- FTPDataConnection 클래스 생성: 데이터 연결 관리
* Passive Mode를 위한 ServerSocket 생성
* 동적 포트 할당 및 클라이언트 연결 수락
* 데이터 송수신 기능 (바이트 배열, 문자열, 스트림)
* 30초 타임아웃 설정
- FTPSession에 데이터 연결 통합
* dataConnection 필드 및 transferType 필드 추가
* 세션 종료 시 데이터 연결 자동 닫기
- PASV 명령어 구현
* Passive Mode 진입
* 서버 주소와 포트를 h1,h2,h3,h4,p1,p2 형식으로 응답
* 이전 데이터 연결 자동 종료
- TYPE 명령어 구현
* ASCII (A) 및 Binary (I) 모드 지원
* 전송 타입 상태 관리
- LIST/NLST 명령어를 데이터 연결로 수정
* PASV 명령어 선행 필수
* 데이터 연결을 통해 파일 목록 전송
* 전송 완료 후 연결 자동 종료
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- FTPFileSystem 클래스 생성: 파일 시스템 추상화
* 안드로이드 외부 저장소의 FTPServer 디렉토리를 루트로 설정
* 경로 보안 검증 (루트 디렉토리 escape 방지)
* 상대/절대 경로 지원
- FTPSession에 파일 시스템 통합
* FTPFileSystem 인스턴스 추가
* PWD 명령어를 파일 시스템 기반으로 수정
- 디렉토리 탐색 명령어 구현
* CWD: 디렉토리 변경
* CDUP: 상위 디렉토리로 이동
- 파일 목록 명령어 구현
* LIST: 상세 파일 목록 (Unix 스타일)
* NLST: 파일명만 나열
* 임시로 제어 연결을 통해 전송 (데이터 연결은 Phase 4에서 구현)
- 파일/디렉토리 관리 명령어 구현
* MKD: 디렉토리 생성
* RMD: 디렉토리 삭제
* DELE: 파일 삭제
* SIZE: 파일 크기 조회
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- AndroidManifest.xml에 필요한 권한 추가 (INTERNET, STORAGE 등)
- FTPResponse 클래스 생성: FTP 응답 코드 상수 정의
- FTPSession 클래스 생성: 개별 클라이언트 세션 처리
* 명령어 읽기/응답 보내기 기본 루프
* USER, PASS, QUIT, SYST, PWD, NOOP 명령어 처리
- FTPServer 클래스 생성: 메인 서버 로직
* ServerSocket으로 포트 2121에서 수신 대기
* ExecutorService로 다중 클라이언트 연결 관리
- FTPService 클래스 생성: 백그라운드 포그라운드 서비스
* 서버 시작/중지 Intent 처리
* 알림 채널 및 포그라운드 서비스 구현
- MainActivity UI 업데이트: 서버 제어 기능
* 시작/중지 버튼 추가
* 서버 상태 표시
* 런타임 권한 요청 처리
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>