Auto-update library for Java
- Java 100%
| .idea | ||
| autoupdate | ||
| build-logic | ||
| example | ||
| gradle | ||
| .gitattributes | ||
| .gitignore | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Archer
데스크톱/독립 실행형 자바 애플리케이션을 위한 백그라운드 자동 업데이트 라이브러리입니다.
- 원격 버전 체크 (Semantic Versioning)
- 비동기 데몬(가상) 스레드 다운로드 + 진행률/속도 콜백
- SHA-256 무결성 검증
- JVM Shutdown Hook + Bootstrap Launcher로 안전 교체/Rollback
- 비정상 종료 후 재시작 시 미적용 패치 복구 (FR-07)
- Java 21+, Windows / macOS / Linux, jlink·jpackage 환경 지원
모듈 좌표: com.elex-project:archer
빠른 시작
ArcherConfig config = new ArcherConfig.Builder()
.currentVersion("1.0.0")
.updateApiUrl("https://example.com/api/update")
.targetJarPath(Path.of("app.jar"))
.tempDirectory(Path.of("temp"))
.restartAppAfterUpdate(true)
.build();
Archer archer = new Archer(config)
.setListener(new UpdateListener() {
@Override
public void onUpdateReady(VersionInfo versionInfo) {
// 토스트/팝업 등 UI 알림
}
@Override
public void onDownloadProgress(long bytesRead, long totalBytes,
double progress, double bytesPerSecond) {
// 진행률·속도 표시
}
});
archer.startAutoUpdate();
앱이 종료되면 Shutdown Hook이 BootstrapLauncher를 독립 프로세스로 기동하여
기존 JAR을 백업한 뒤 신규 JAR으로 교체합니다. 실패 시 .bak에서 복원합니다.
원격 API 응답 형식
{
"latestVersion": "1.2.0",
"minRequiredVersion": "1.0.0",
"downloadUrl": "https://example.com/releases/app-1.2.0.jar",
"checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"checksumAlgorithm": "SHA-256",
"releaseNotes": "버그 수정 및 성능 향상"
}
주요 설정
| 설정 | 기본값 | 설명 |
|---|---|---|
networkTimeout |
5초 | 버전 체크 타임아웃 |
downloadTimeout |
30분 | 패치 다운로드 타임아웃 |
maxRetries |
3 | 네트워크 실패 재시도 횟수 |
tempDirectory |
temp/archer_downloads |
패치 임시 저장 경로 |
restartCommand |
자동 감지 | jpackage 네이티브 실행 파일 등 |
상세 요구사항: autoupdate/REQUIREMENTS.md
빌드 / 테스트
./gradlew :autoupdate:build
./gradlew :autoupdate:test
Copyright © 2026 Elex Project. All rights reserved.