快速集成
添加依赖
Android.mk
makefile
# 引入预编译静态库
include $(CLEAR_VARS)
LOCAL_MODULE := libtxnet
LOCAL_SRC_FILES := $(LOCAL_PATH)/prebuilt/arm64-v8a/libtxnet.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/prebuilt/include
include $(PREBUILT_STATIC_LIBRARY)
# 你的模块
include $(CLEAR_VARS)
LOCAL_MODULE := your_module
LOCAL_SRC_FILES := main.cpp
LOCAL_STATIC_LIBRARIES := libtxnet
LOCAL_LDLIBS := -llog -lz
include $(BUILD_EXECUTABLE)头文件
cpp
#include "txnet.h"基础流程
cpp
#include "txnet.h"
int main() {
// ========== 1. 初始化 ==========
txnet_config config = {
.app_id = "your_app_id",
.server_public_key = "-----BEGIN PUBLIC KEY-----\n...",
.client_private_key = "-----BEGIN PRIVATE KEY-----\n...",
.version_code = 1,
.version_name = "1.0.0",
.login_save_path = "/data/local/tmp/login.dat"
};
txnet_init(&config);
// ========== 2. 连接服务器 ==========
if (!txnet_connect()) {
return 1;
}
// ========== 3. 登录 ==========
txnet_login();
if (!txnet_is_logged_in()) {
return 1;
}
// ========== 4. 检查更新 ==========
txnet_check_update();
// ========== 5. 获取远程配置 ==========
static bool g_enabled = false;
static float g_value = 1.0f;
txnet_bind_config_bool("enabled", &g_enabled, false);
txnet_bind_config_float("value", &g_value, 1.0f);
txnet_get_config();
// ========== 6. 业务逻辑 ==========
while (txnet_is_logged_in()) {
// 你的代码...
}
// ========== 7. 断开连接 ==========
txnet_disconnect();
return 0;
}回调设置(可选)
cpp
// 连接状态回调
void onConnection(int status, const char* msg) {
printf("[连接] %s\n", msg);
}
// 登录结果回调
void onLogin(bool ok, int code, const char* msg, long long expire) {
if (ok) {
printf("[登录] 成功,到期: %lld\n", expire);
} else {
printf("[登录] 失败: %s\n", msg);
}
}
// 更新检查回调
void onUpdate(bool need, bool force, int ver, const char* name,
const char* content, const char* url, const char* disk) {
if (need) {
printf("[更新] 发现新版本: %s\n", name);
}
}
int main() {
txnet_init(&config);
txnet_set_connection_callback(onConnection);
txnet_set_login_callback(onLogin);
txnet_set_update_callback(onUpdate);
// ...
}共享雷达集成
cpp
static bool g_radarEnabled = true;
static float g_radarFps = 10.0f;
// 初始化(程序启动时调用一次)
txnet_radar_init(&g_radarEnabled, &g_radarFps, TXNET_RADAR_GAME_PUBGMHD);
// 游戏循环中
void gameLoop() {
// 设置对局信息
txnet_radar_set_game(world_address, game_state, map_id);
// 设置自身信息
txnet_radar_set_self(self_address, self_name, self_team);
// 添加物品
for (auto& player : players) {
txnet_radar_item_pubgmhd item = {};
item.type = "player";
item.address = player.address;
item.uid = player.uid;
item.name = player.name;
item.team = player.team;
item.pos_x = player.x;
item.pos_y = player.y;
item.pos_z = player.z;
item.health = player.health;
item.distance = player.distance;
txnet_radar_add_item(&item);
}
}同行检测集成
cpp
// 初始化
txnet_peer_init([](const char* uid, bool same, const char** progs, int cnt) {
if (same) {
printf("发现同行: %s\n", uid);
}
});
// 游戏循环中
void gameLoop() {
txnet_peer_submit_self(self_uid, self_name, world_address);
for (auto& player : players) {
txnet_peer_add_player(player.uid, player.name);
if (txnet_peer_is_same_server(player.uid)) {
player.is_peer = true;
}
}
}运行模式
库提供两种运行模式,通过 txnet_set_xxx_mode(mode) 设置:
| 模式 | 值 | 行为 |
|---|---|---|
| 默认模式 | 0 | 自动处理错误(重试/退出),适合简单场景 |
| 自定义模式 | 1 | 仅回调通知,由主程序处理,适合复杂场景 |
各模块默认模式行为
| 模块 | 失败行为 |
|---|---|
| 连接 | 自动重连,超过5次后 exit(1) |
| 登录 | 提示输入登录码重试;超时3分钟后 exit(1) |
| 更新 | 强制更新时打开浏览器并 exit(0) |
| 退出 | 收到踢出/退出指令后 exit(0) |
注意事项
- 调用顺序: 必须先
txnet_init,再调用其他函数 - 阻塞函数:
connect、login、check_update、get_config都是阻塞的 - 登录超时: 连接成功后 3 分钟内未登录将触发超时
- 配置绑定: 在
get_config之前完成所有bind_config_xxx调用 - 线程安全: 回调在接收线程执行,注意数据同步