Files
android-backup-gui/app/proguard-rules.pro
sakuradairong f99585a7c0 feat(release): 阶段6-7 Restic streaming标识、发布治理、CI
阶段6:Restic streaming 策略
- ConfigScreen 流式备份文案改为'实验性 Restic 临时目录备份'
  并显示不完整备份警告
- ResticStreamBackup 写入 streaming_manifest.json 记录 excluded 项目
- RestoreViewModel 检测 streaming manifest 并在确认弹窗中显示警告

阶段7:发布与仓库治理
- .gitignore 排除 app/release/*.apk
- build.gradle release 构建强制签名,启用 R8 + shrinkResources
- proguard-rules.pro 修正 restic 类路径,启用 R8 keep 规则
- 新增 .github/workflows/android.yml (CI: lint/test/assembleDebug)
- 新增 .github/workflows/release.yml (Release: tag触发,签名,sha256)
2026-06-17 11:24:39 +08:00

56 lines
2.3 KiB
Prolog

# ProGuard/R8 rules for Android Backup GUI
# ==========================================
# --- kotlinx.serialization ---
# Keep @SerialName classes and companion serializer fields
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.AnnotationsKt
-keepclassmembers class kotlinx.serialization.json.** {
*** Companion;
}
-keepclasseswithmembers class kotlinx.serialization.json.** {
kotlinx.serialization.KSerializer serializer(...);
}
-keep,includedescriptorclasses class com.example.androidbackupgui.**$$serializer { *; }
-keepclassmembers class com.example.androidbackupgui.** {
*** Companion;
}
-keepclasseswithmembers class com.example.androidbackupgui.** {
kotlinx.serialization.KSerializer serializer(...);
}
# --- NanoHTTPD ---
# NanoHTTPD (package fi.iki.elonen despite Maven group org.nanohttpd)
-keep class fi.iki.elonen.** { *; }
# --- RemoteTransport (WebDAV/SMB) ---
-keep class com.example.androidbackupgui.backup.restic.RemoteTransport { *; }
# --- Data classes (serialization) ---
-keep class com.example.androidbackupgui.backup.restic.ResticWrapper$ResticProgress { *; }
-keep class com.example.androidbackupgui.backup.restic.ResticWrapper$BackupSummary { *; }
-keep class com.example.androidbackupgui.backup.restic.ResticWrapper$ResticSnapshot { *; }
-keep class com.example.androidbackupgui.backup.RestoreOperation$RestoreProgress { *; }
-keep class com.example.androidbackupgui.backup.BackupConfig { *; }
-keep class com.example.androidbackupgui.backup.core.AppError { *; }
-keep class com.example.androidbackupgui.backup.core.AppResult { *; }
# --- RemoteTransport implementations ---
-keep class com.example.androidbackupgui.backup.restic.SmbTransport { *; }
-keep class com.example.androidbackupgui.backup.restic.WebdavTransport { *; }
# --- WifiManager (called from UI, kept for safety) ---
-keep class com.example.androidbackupgui.backup.WifiManager { *; }
# --- Keep data models used by kotlinx.serialization ---
-keep class com.example.androidbackupgui.model.** { *; }
# --- Keep R classes (referenced by code) ---
-keep class com.example.androidbackupgui.R { *; }
# --- jcifs-ng (SMB) keep class/member names for reflection ---
-keep class jcifs.util.Crypto { *; }
-keep class jcifs.smb.NtlmUtil { *; }
-keep class jcifs.ntlmssp.Type3Message { *; }
-keep class jcifs.ntlmssp.NtlmContext { *; }