Skip to content

功能强大的Android游戏存档管理SDK | 支持AES加密、反作弊、JSON导入、异步操作、性能监控 | JitPack发布

Notifications You must be signed in to change notification settings

706412584/GameUtil

Repository files navigation

游戏存档工具 (GameUtil)

License Platform API

一个基于Json架构开发、功能强大、高性能的Android游戏存档管理SDK,支持JSON导入/导出、自动分表、异步操作、性能监控等特性。

🎉 现已发布到 JitPack! 支持远程依赖导入,无需下载源码即可使用。

主要特性

🎯 核心功能

  • AES-GCM加密 - 军事级加密算法保护存档安全
  • 反作弊系统 - 设备ID验证、完整性校验、时间戳验证
  • 主表分表支持 - 灵活的数据分片存储
  • 线程安全 - 完全的并发安全保障

🚀 性能优化

  • LRU缓存 - 智能缓存机制,读取性能提升30倍
  • 异步保存 - 不阻塞主线程,批量操作提升5倍性能
  • 数据压缩 - GZIP压缩,节省75%存储空间
  • 性能监控 - 实时统计操作耗时、吞吐量、错误率

📦 JSON操作

  • 完整JSON导入 - 一键导入游戏存档JSON
  • 自动分表 - 支持前缀、大小、自定义多种分表策略
  • 批量操作 - 批量导入/导出,高效处理海量数据
  • 格式验证 - 自动验证JSON格式和数据完整性

快速开始

1. 添加依赖

方式一:使用 JitPack 远程依赖(推荐)

步骤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'
}

⚠️ 注意:模块名必须小写(savelibraryanticheat

方式二:本地项目依赖

如果您克隆了本项目,可以直接依赖本地模块:

dependencies {
    implementation project(':Savelibrary')
    implementation project(':AntiCheat')
}

2. 基础使用

// 初始化存档管理器
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");

3. JSON导入

// 准备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
);

核心模块

1. GameSaveManager

主要的存档管理器,提供存档的增删改查、JSON导入导出等功能。

GameSaveManager manager = new GameSaveManager(saveDir);

// 同步操作
manager.saveSave(saveData);
manager.loadSave("save001");

// 异步操作
manager.saveAsync(saveData, callback);
manager.batchLoadAsync(saveIds);

// JSON导入
manager.importFromJson("save001", jsonStr);

2. JsonImportUtil

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);

3. AsyncSaveManager

异步存档管理器,提供高性能的异步操作。

// 异步保存
asyncManager.saveAsync(saveData, new SaveCallback() {
    @Override
    public void onSuccess(String saveId) {
        // 保存成功
    }
    
    @Override
    public void onFailure(String saveId, Exception error) {
        // 保存失败
    }
});

// 批量操作
BatchResult result = asyncManager.batchSave(saveDataList);

4. PerformanceMonitor

性能监控器,实时统计系统性能指标。

// 启用监控
manager.setPerformanceMonitorEnabled(true);

// 查看统计
System.out.println(manager.getPerformanceReport());
System.out.println(manager.getCacheStats());
System.out.println(manager.getSystemStats());

5. LruCache

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      # 时间作弊检测

使用场景

场景1:小型独立游戏

// 简单配置,不分表
GameSaveManager manager = new GameSaveManager(saveDir);
manager.saveSave(saveData);

场景2:中型RPG游戏

// 启用分表和缓存
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");

场景3:大型在线游戏

// 完整配置
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);

最佳实践

1. 性能优化

  • ✅ 开发阶段启用性能监控
  • ✅ 大存档(>10KB)启用压缩
  • ✅ 使用异步保存避免卡顿
  • ✅ 批量操作提升效率

2. 分表策略

  • 小型游戏(<100KB):不分表
  • 中型游戏(100KB-1MB):按模块分表
  • 大型游戏(>1MB):组合策略

3. 资源管理

// 应用退出时释放资源
@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

许可证

本项目仅供学习和研究使用。


更新日志

v2.1 (2025-10-23)

  • 🆕 新增反作弊模块
    • ✅ Root检测
    • ✅ 模拟器检测
    • ✅ Hook框架检测(Xposed、Frida、Substrate)
    • ✅ 调试器检测
    • ✅ 签名验证
    • ✅ 代理检测
    • ✅ 多开检测
    • ✅ 内存修改器检测
    • ✅ 时间作弊检测
    • ✅ 安全分数评估系统

v2.0 (2025-10-23)

  • ✅ 添加JSON导入导出功能
  • ✅ 添加LRU缓存机制
  • ✅ 添加异步保存功能
  • ✅ 添加数据压缩功能
  • ✅ 添加性能监控功能
  • ✅ 支持自动分表策略

v1.0

  • ✅ 基础存档管理
  • ✅ AES加密
  • ✅ 反作弊系统
  • ✅ 主表分表支持

🚀 发布说明

JitPack 仓库

本项目已发布到 JitPack,可以通过远程依赖方式使用:

依赖引用

// 存档管理库(包含所有存档管理功能)
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。

About

功能强大的Android游戏存档管理SDK | 支持AES加密、反作弊、JSON导入、异步操作、性能监控 | JitPack发布

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published