一个基于Json架构开发、功能强大、高性能的Android游戏存档管理SDK,支持JSON导入/导出、自动分表、异步操作、性能监控等特性。
🎉 现已发布到 JitPack! 支持远程依赖导入,无需下载源码即可使用。
- ✅ AES-GCM加密 - 军事级加密算法保护存档安全
- ✅ 反作弊系统 - 设备ID验证、完整性校验、时间戳验证
- ✅ 主表分表支持 - 灵活的数据分片存储
- ✅ 线程安全 - 完全的并发安全保障
- ✅ LRU缓存 - 智能缓存机制,读取性能提升30倍
- ✅ 异步保存 - 不阻塞主线程,批量操作提升5倍性能
- ✅ 数据压缩 - GZIP压缩,节省75%存储空间
- ✅ 性能监控 - 实时统计操作耗时、吞吐量、错误率
- ✅ 完整JSON导入 - 一键导入游戏存档JSON
- ✅ 自动分表 - 支持前缀、大小、自定义多种分表策略
- ✅ 批量操作 - 批量导入/导出,高效处理海量数据
- ✅ 格式验证 - 自动验证JSON格式和数据完整性
步骤1: 在项目的 settings.gradle 中添加 JitPack 仓库:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' } // 添加 JitPack 仓库
}
}步骤2: 在 app/build.gradle 中添加依赖:
dependencies {
// 存档管理库
implementation 'com.github.706412584.GameUtil:savelibrary:v2.1.5'
// 反作弊库
implementation 'com.github.706412584.GameUtil:anticheat:v2.1.5'
}
⚠️ 注意:模块名必须小写(savelibrary和anticheat)
如果您克隆了本项目,可以直接依赖本地模块:
dependencies {
implementation project(':Savelibrary')
implementation project(':AntiCheat')
}// 初始化存档管理器
File saveDir = new File(context.getFilesDir(), "saves");
GameSaveManager manager = new GameSaveManager(saveDir);
// 启用性能优化
manager.setPerformanceMonitorEnabled(true);
manager.setCompressionEnabled(true);
// 保存存档
SaveData saveData = new SaveData("save001");
saveData.set("player_name", "玩家1");
saveData.set("level", 10);
manager.saveSave(saveData);
// 读取存档
SaveData loaded = manager.loadSave("save001");// 准备JSON数据
String jsonStr = "{"
+ "\"player_name\": \"张三\","
+ "\"level\": 10,"
+ "\"inventory_weapon\": \"sword\","
+ "\"quest_main\": \"救公主\""
+ "}";
// 定义分表策略
Map<String, String> prefixMapping = new HashMap<>();
prefixMapping.put("inventory_", "inventory");
prefixMapping.put("quest_", "quest");
// 导入并自动分表
JsonImportUtil.ImportResult result = manager.importFromJsonWithPrefix(
"save001",
jsonStr,
prefixMapping
);主要的存档管理器,提供存档的增删改查、JSON导入导出等功能。
GameSaveManager manager = new GameSaveManager(saveDir);
// 同步操作
manager.saveSave(saveData);
manager.loadSave("save001");
// 异步操作
manager.saveAsync(saveData, callback);
manager.batchLoadAsync(saveIds);
// JSON导入
manager.importFromJson("save001", jsonStr);JSON导入导出工具,支持多种分表策略。
// 前缀策略
PrefixBasedStrategy prefixStrategy = new PrefixBasedStrategy();
prefixStrategy.addMapping("inventory_", "inventory");
// 大小策略
SizeBasedStrategy sizeStrategy = new SizeBasedStrategy(10240); // 10KB
// 组合策略
CompositeStrategy compositeStrategy = new CompositeStrategy();
compositeStrategy.addStrategy(prefixStrategy);
compositeStrategy.addStrategy(sizeStrategy);异步存档管理器,提供高性能的异步操作。
// 异步保存
asyncManager.saveAsync(saveData, new SaveCallback() {
@Override
public void onSuccess(String saveId) {
// 保存成功
}
@Override
public void onFailure(String saveId, Exception error) {
// 保存失败
}
});
// 批量操作
BatchResult result = asyncManager.batchSave(saveDataList);性能监控器,实时统计系统性能指标。
// 启用监控
manager.setPerformanceMonitorEnabled(true);
// 查看统计
System.out.println(manager.getPerformanceReport());
System.out.println(manager.getCacheStats());
System.out.println(manager.getSystemStats());LRU缓存实现,提升读取性能。
LruCache<String, String> cache = new LruCache<>(50);
cache.put("key", "value");
String value = cache.get("key");
// 统计信息
System.out.println(cache.getStats());
System.out.println("命中率: " + cache.getHitRate());| 操作 | 无缓存 | LRU缓存 | 提升 |
|---|---|---|---|
| 首次读取 | 15ms | 15ms | - |
| 二次读取 | 15ms | 0.5ms | 30倍 |
| 缓存命中率 | 0% | 80%+ | - |
| 操作 | 同步 | 异步 | 提升 |
|---|---|---|---|
| 单次保存 | 阻塞15ms | 不阻塞 | 无感知 |
| 批量100个 | 阻塞1.5s | 300ms | 5倍 |
| 数据类型 | 原始 | 压缩后 | 压缩率 |
|---|---|---|---|
| JSON文本 | 100KB | 25KB | 75% |
| 重复数据 | 500KB | 80KB | 84% |
GameUtil
├── Savelibrary # 存档管理库
│ ├── GameSaveManager # 主管理器
│ │ ├── SaveData # 存档数据模型
│ │ ├── SaveTableManager # 分表管理(含LRU缓存)
│ │ └── AntiCheatManager # 反作弊管理
│ │
│ ├── AsyncSaveManager # 异步操作管理
│ │ ├── 线程池
│ │ ├── 任务队列
│ │ └── 批量操作
│ │
│ ├── JsonImportUtil # JSON导入工具
│ │ ├── PrefixBasedStrategy # 前缀分表策略
│ │ ├── SizeBasedStrategy # 大小分表策略
│ │ └── CompositeStrategy # 组合策略
│ │
│ ├── PerformanceMonitor # 性能监控
│ │ ├── 操作统计
│ │ ├── 吞吐量计算
│ │ └── 错误率统计
│ │
│ └── Utilities
│ ├── AESUtils # AES加密工具
│ ├── LruCache # LRU缓存
│ └── CompressionUtil # 压缩工具
│
└── AntiCheat # 反作弊模块 🆕
├── SecurityDetector # 安全检测器
├── RootDetector # Root检测
├── EmulatorDetector # 模拟器检测
├── HookDetector # Hook框架检测
├── DebugDetector # 调试器检测
├── SignatureValidator # 签名验证
├── ProxyDetector # 代理检测
├── MultiInstanceDetector # 多开检测
├── MemoryHackDetector # 内存修改器检测
└── TimeCheatDetector # 时间作弊检测
// 简单配置,不分表
GameSaveManager manager = new GameSaveManager(saveDir);
manager.saveSave(saveData);// 启用分表和缓存
GameSaveManager manager = new GameSaveManager(saveDir);
manager.setPerformanceMonitorEnabled(true);
// 按模块分表
Map<String, String> prefixMapping = new HashMap<>();
prefixMapping.put("inventory_", "inventory");
prefixMapping.put("quest_", "quest");
prefixMapping.put("skill_", "skill");// 完整配置
GameSaveManager manager = new GameSaveManager(saveDir);
manager.setPerformanceMonitorEnabled(true);
manager.setCompressionEnabled(true);
// 组合策略:前缀+大小
CompositeStrategy strategy = new CompositeStrategy();
strategy.addStrategy(new PrefixBasedStrategy(prefixMapping));
strategy.addStrategy(new SizeBasedStrategy(10240));
// 异步批量操作
manager.batchSaveAsync(saveDataList);- ✅ 开发阶段启用性能监控
- ✅ 大存档(>10KB)启用压缩
- ✅ 使用异步保存避免卡顿
- ✅ 批量操作提升效率
- 小型游戏(<100KB):不分表
- 中型游戏(100KB-1MB):按模块分表
- 大型游戏(>1MB):组合策略
// 应用退出时释放资源
@Override
protected void onDestroy() {
super.onDestroy();
manager.shutdown();
}详细使用指南请查看 Savelibrary 使用指南
一个强大的应用安全检测库,支持10种常见破解和作弊检测:
- ✅ Root检测 - 检测设备Root状态
- ✅ 模拟器检测 - 检测各类Android模拟器
- ✅ Hook框架检测 - 检测Xposed、Frida等
- ✅ 调试器检测 - 检测调试器连接
- ✅ 签名验证 - 防止应用被篡改
- ✅ 代理检测 - 检测网络代理设置
- ✅ 多开检测 - 检测虚拟环境和多开
- ✅ 内存修改器检测 - 检测GameGuardian等
- ✅ 时间作弊检测 - 检测系统时间修改
- ✅ VPN检测 - 检测VPN连接
快速使用:
// 创建安全检测器
SecurityDetector detector = new SecurityDetector(context,
new SecurityDetector.SecurityCallback() {
@Override
public void onThreatDetected(String type, String desc, int level) {
Log.w("Security", type + ": " + desc);
}
@Override
public void onDetectionComplete(boolean passed,
List<DetectionResult> threats) {
if (!passed) {
// 处理安全威胁
handleThreats(threats);
}
}
});
// 执行检测
detector.performSecurityCheck();
// 获取安全分数 (0-100)
int score = detector.getSecurityScore();详细使用指南请查看 AntiCheat 使用指南
- 语言: Java 11
- 最低SDK: Android API 23 (Android 6.0)
- 加密: AES-GCM-256
- 压缩: GZIP
- 线程: ExecutorService + ReadWriteLock
本项目仅供学习和研究使用。
- 🆕 新增反作弊模块
- ✅ Root检测
- ✅ 模拟器检测
- ✅ Hook框架检测(Xposed、Frida、Substrate)
- ✅ 调试器检测
- ✅ 签名验证
- ✅ 代理检测
- ✅ 多开检测
- ✅ 内存修改器检测
- ✅ 时间作弊检测
- ✅ 安全分数评估系统
- ✅ 添加JSON导入导出功能
- ✅ 添加LRU缓存机制
- ✅ 添加异步保存功能
- ✅ 添加数据压缩功能
- ✅ 添加性能监控功能
- ✅ 支持自动分表策略
- ✅ 基础存档管理
- ✅ AES加密
- ✅ 反作弊系统
- ✅ 主表分表支持
本项目已发布到 JitPack,可以通过远程依赖方式使用:
- 仓库主页: https://jitpack.io/#706412584/GameUtil
- 最新版本:
v2.1.2
// 存档管理库(包含所有存档管理功能)
implementation 'com.github.706412584.GameUtil:savelibrary:v2.1.2'
// 反作弊库(包含所有安全检测功能)
implementation 'com.github.706412584.GameUtil:anticheat:v2.1.2'| 版本 | 说明 |
|---|---|
v2.1.2 |
最新稳定版(推荐) |
latest.release |
始终指向最新发布版本 |
master-SNAPSHOT |
最新开发版本(不推荐生产环境) |
如有问题或建议,欢迎提出Issue。