news 2026/10/20 17:07:39

Drools 7.48.0.Final 规则引擎本地快速部署与实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Drools 7.48.0.Final 规则引擎本地快速部署与实战指南

简介:本资源为 Drools 规则引擎 7.48.0 Final 正式发行版完整分发包,面向 Java 开发者、企业级规则系统设计人员及微服务中集成业务规则的中高级工程师。Drools 是 Red Hat 主导的开源规则引擎,广泛应用于金融风控、保险核保、电商促销策略等复杂业务逻辑解耦场景,该版本提供完整的规则编译、执行、调试与可视化管理能力。压缩包为 ZIP 格式,大小 64.01MB,包含核心 JAR 库、示例工程、文档(HTML/PDF)、CLI 工具及 Maven 模板等关键组件,其中 JAR 文件支撑运行时规则加载,示例工程覆盖 DRL 编写、KieContainer 配置与单元测试实践,文档详述 API 变更与迁移指南。目前已有 309 人学习下载,读者可直接部署本地开发环境、快速验证规则语法、复用官方示例结构、参考最新版配置规范,是掌握 Drools 7.x 稳定生产版本的理想起点。

1. Drools 7.48.0.Final 是什么:一个被低估的规则引擎生产就绪包,不是 demo 工具箱

如果你正在为「业务逻辑硬编码在 Java 里、每次改个折扣策略就要发版」而头疼,或者正被「风控规则散落在 if-else 和配置表里、审计时根本说不清决策路径」拖慢交付节奏——那么drools-distribution-7.48.0.Final.zip不是某个冷门开源项目的压缩包,而是 Drools 官方发布的、面向企业级规则系统落地的完整可部署分发包(distribution)。它打包了运行 Drools 规则引擎所需的全部核心组件:Kie Server 运行时、Drools Workbench(现称 Business Central)前端、Maven 构建支持、示例项目、文档和脚本工具。重点在于:这不是源码包(source),也不是仅含 jar 的依赖包(kie-api/kie-ci),而是开箱即用的「规则中台最小可行环境」。它专为需要快速验证规则建模、本地调试规则流、搭建轻量规则管理后台、或离线集成到私有化部署系统的工程师准备。我常把它比作「规则世界的 Docker Desktop」——不求替代 Kubernetes,但能让你在笔记本上三分钟跑通从规则编写、编译、部署到 REST 调用的全链路。新手靠它建立规则引擎直觉,熟手用它做策略沙盒、灰度验证和客户现场快速交付。别被.zip后缀迷惑:这是 Drools 社区在 2023 年底发布的最后一个 7.x 系列稳定终版,兼容 JDK 8–17,且明确标注Final,意味着无后续补丁,适合锁定技术栈的生产环境。


2. 解压即用:本地启动 Business Central 与 Kie Server 的最小闭环

Drools 7.48.0.Final 的设计哲学是「降低首次交互门槛」。它不强制你配 Maven、不依赖外部 Tomcat、也不要求先装 WildFly。整个分发包自带嵌入式服务器,解压后一条命令就能拉起规则开发与执行环境。这步操作是所有后续工作的地基,必须亲手走通。

2.1 解压与目录结构认知:看清哪些文件真正参与运行

首先,下载得到drools-distribution-7.48.0.Final.zip,解压到一个无中文、无空格、路径较短的目录(如C:\drools\或/opt/drools/)。解压后核心目录如下:

drools-distribution-7.48.0.Final/ ├── bin/ # 启动/停止脚本(Windows .bat,Linux/Mac .sh) ├── business-central/ # Business Central(Web IDE)的 WAR 包及配置 ├── kie-server/ # Kie Server(REST/Java API 执行引擎)的 WAR 包及配置 ├── samples/ # 官方示例:loan-validation, insurance-pricing 等 ├── docs/ # HTML 格式离线文档(含 API、用户指南、迁移说明) └── README.md # 关键版本信息与快速启动摘要

提示:business-central和kie-server目录下各自包含standalone.xml(WildFly 配置)、webapps/(WAR 包存放处)和bin/(服务控制脚本)。它们是两个独立进程,但默认配置已预设为同端口通信(BC 调用 KS),无需手动改 host/port。

2.2 一键启动:用内置脚本拉起双服务

进入解压根目录,执行对应平台的启动脚本。不要跳过日志观察环节——这是判断是否真启动成功的唯一依据。

Windows 环境(PowerShell 或 CMD)
cd drools-distribution-7.48.0.Final .\bin\start-business-central.bat
Linux / macOS 环境(Bash)
cd drools-distribution-7.48.0.Final ./bin/start-business-central.sh

该脚本实际执行三件事:

  1. 启动 WildFly 应用服务器;
  2. 自动部署business-central.war(提供 Web UI);
  3. 自动部署kie-server.war(提供 REST 接口);
  4. 输出日志到控制台,并在最后打印类似WFLYSRV0010: Deployed "business-central.war"和WFLYSRV0010: Deployed "kie-server.war"的成功标记。

参数说明:脚本默认使用standalone.xml配置,绑定localhost:8080。若需修改端口(如避免冲突),编辑business-central/standalone/configuration/standalone.xml,搜索<socket-binding-group name="standard-sockets" ...>下的<socket-binding name="http" port="8080"/>,改为8081等。改完重启脚本。

2.3 验证服务就绪:三个关键 URL 必须能打开

启动完成后(通常需 60–90 秒),在浏览器中依次访问以下地址,确认服务状态:

URL用途期望响应
http://localhost:8080/business-central/Business Central 登录页显示登录界面,用户名/密码为admin/admin(首次登录后建议修改)
http://localhost:8080/kie-server/services/rest/server/Kie Server 健康检查端点返回 JSON:{"type":"SUCCESS","msg":"Kie Server info"}
http://localhost:8080/business-central/rest/controller/server/BC 与 KS 连接状态返回 JSON:{"status":"STARTED","serverId":"default-kieserver"}

逻辑说明:这三个 URL 分别验证了 UI 层、执行层、以及两者间的通信链路。只要business-central页面能加载,且后两个 REST 端点返回SUCCESS或STARTED,就证明drools-distribution-7.48.0.Final.zip已构成一个功能完整的规则运行时闭环。此时你已拥有了一个本地规则中台,下一步就是往里面放真实规则。


3. 从零创建第一个规则项目:在 Business Central 中完成建模、构建与部署

Business Central(BC)是 Drools 7.x 的可视化规则开发环境,它把规则定义、测试、版本管理和部署封装成 Web 操作。对新手而言,这是理解「规则即资产」的最佳入口;对团队而言,它是非开发人员(如业务分析师)参与规则生命周期的协作界面。本节带你用 BC 创建一个极简但真实的规则:订单金额满 100 元打 9 折,满 500 元打 7 折。

3.1 创建新项目:选择模板与基础配置

  1. 访问http://localhost:8080/business-central/,用admin/admin登录;
  2. 点击左上角Projects → Add Project;
  3. 填写项目信息:
    • Group ID:com.example.rules(符合 Maven 命名规范,影响后续 JAR 包坐标);
    • Artifact ID:discount-rules(项目唯一标识,建议小写字母+短横线);
    • Version:1.0.0-SNAPSHOT(默认即可,支持语义化版本);
    • Description:Order discount calculation rules(可选,但建议写清用途);
  4. 点击Next,在模板列表中选择Empty Project(空项目,最干净);
  5. 点击Finish,项目创建完成,自动进入项目仪表盘。

为什么选 Empty Project?官方提供的Drools Rule Project模板会预置大量示例规则和复杂配置,反而掩盖核心流程。从空项目起步,你能清晰看到每个文件的作用:src/main/resources/存放.drl规则文件,src/main/java/存放 POJO 模型类,pom.xml控制构建行为。这是建立规则工程化思维的第一步。

3.2 定义数据模型:用 Java 类描述业务事实(Fact)

规则引擎的输入是「事实(Fact)」,即 Java 对象。BC 支持在线编写 POJO,自动生成 getter/setter 和toString()。

  1. 在项目左侧导航栏,点击Assets → New Asset → Data Object;
  2. 输入类名:Order;
  3. 点击OK,进入在线编辑器;
  4. 添加字段:
    • id: String
    • amount: BigDecimal(用BigDecimal避免浮点精度问题,比double更适合金额计算)
    • discountRate: BigDecimal(用于存储计算出的折扣率,初始为1.0)
  5. 点击Save & Close。

BC 会自动生成src/main/java/com/example/rules/Order.java,内容包含标准字段、构造函数、getter/setter。关键点:amount和discountRate字段类型必须为java.math.BigDecimal,否则规则中>=比较会因类型不匹配失败。

3.3 编写 DRL 规则:声明式逻辑的最小语法实践

  1. 点击Assets → New Asset → Guided Rule(向导式规则,对新手更友好);
  2. 输入规则名:Apply Discount for High Value Order;
  3. 点击OK,进入向导界面;
  4. When(条件)部分:
    • 点击+添加条件 → 选择Order类型;
    • 点击amount字段 → 选择>=→ 输入500;
  5. Then(动作)部分:
    • 点击+添加动作 → 选择Set field value;
    • 选择discountRate字段 → 输入new java.math.BigDecimal("0.7");
  6. 点击Save & Close。

BC 会将上述操作翻译为标准 DRL 代码,存为src/main/resources/com/example/rules/ApplyDiscountForHighValueOrder.drl。其内容类似:

package com.example.rules; import com.example.rules.Order; import java.math.BigDecimal; rule "Apply Discount for High Value Order" when $order : Order( amount >= new BigDecimal("500") ) then $order.setDiscountRate(new BigDecimal("0.7")); update($order); end

参数说明与逻辑说明:

  • package必须与项目 Group ID/Artifact ID 一致,否则 Kie Server 加载时找不到规则;
  • import声明了事实类和工具类,BigDecimal必须显式导入;
  • when块中$order是变量绑定,amount >= new BigDecimal("500")是精确比较(字符串构造避免double精度丢失);
  • then块中update($order)是关键:它通知引擎该事实已被修改,可能触发其他规则重匹配(如后续叠加优惠券规则),没有它,修改不会生效。

3.4 构建与部署:从源码到可调用服务的两键操作

  1. 点击项目右上角Deploy按钮(图标为火箭);
  2. 弹窗中确认Server Configuration为default-kieserver(即本机 Kie Server);
  3. 点击Deploy,等待进度条完成;
  4. 查看右上角通知:Deployment successful for project discount-rules。

此时,Kie Server 已将该项目编译为 KJAR(Kie JAR),并注册为一个可执行容器(Container)。你可以通过 REST API 查看其状态:

curl -X GET "http://localhost:8080/kie-server/services/rest/server/containers" \ -H "accept: application/json" \ -u 'admin:admin'

返回 JSON 中应包含"container-id":"discount-rules_1.0.0-SNAPSHOT"和"status":"STARTED"。

避坑提示:如果部署失败,常见原因有二:一是pom.xml中kie-maven-plugin版本与 7.48.0.Final 不匹配(BC 自动生成的版本正确,勿手动改);二是规则文件名含空格或特殊字符(如My Rule.drl),BC 会静默失败,务必用连字符命名(my-rule.drl)。


4. 调用规则:用 REST API 和 Java Client 两种方式触发决策

规则部署后,真正的价值在于被业务系统调用。Drools 7.48.0.Final 提供了标准化的 REST 接口(Kie Server)和 Java SDK(Kie Services Client),覆盖从简单 HTTP 请求到深度集成的所有场景。本节给出两种最常用、最可靠的调用方式,附带可直接粘贴运行的代码。

4.1 REST API 调用:curl 命令完成一次完整决策

这是验证规则是否生效的最快方法,无需写代码,适合测试、监控和 CI/CD 流水线。

  1. 准备请求体(order.json):
{ "lookup": "discount-rules_1.0.0-SNAPSHOT", "commands": [ { "insert": { "object": { "com.example.rules.Order": { "id": "ORD-001", "amount": "600.00" } }, "out-identifier": "order" } }, { "fire-all-rules": {} }, { "get-object": { "identifier": "order" } } ] }

逻辑说明:

  • lookup是容器 ID,格式为{artifactId}_{version};
  • insert将一个Order实例作为事实插入工作内存,out-identifier为其分配别名order,便于后续获取;
  • fire-all-rules触发所有匹配规则;
  • get-object返回修改后的order对象,查看discountRate是否被更新。
  1. 发送 POST 请求:
curl -X POST "http://localhost:8080/kie-server/services/rest/server/containers/discount-rules_1.0.0-SNAPSHOT/" \ -H "content-type: application/json" \ -H "accept: application/json" \ -u 'admin:admin' \ -d @order.json
  1. 预期响应(截取关键部分):
{ "type": "SUCCESS", "msg": "Container 'discount-rules_1.0.0-SNAPSHOT' successfully called.", "result": { "execution-results": { "results": [ { "value": { "com.example.rules.Order": { "id": "ORD-001", "amount": "600.00", "discountRate": "0.7" } } } ] } } }

参数说明:-u 'admin:admin'是 Basic Auth 认证凭据,Kie Server 默认启用。生产环境必须更换为强密码或对接 LDAP。

4.2 Java Client 调用:在 Spring Boot 项目中嵌入规则执行

当你的业务系统是 Java 应用时,直接使用kie-server-client依赖比 HTTP 调用更高效、类型更安全。

  1. 在 Spring Boot 项目pom.xml中添加依赖:
<dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-client</artifactId> <version>7.48.0.Final</version> </dependency>
  1. 编写调用代码(Spring Bean):
@Service public class DiscountRuleService { private final KieServicesClient client; public DiscountRuleService() { // 连接到本地 Kie Server this.client = KieServicesFactory.newKieServicesClient( new URL("http://localhost:8080/kie-server/services/rest/server") ); // 设置认证(必须!) client.setCredentials("admin", "admin"); } public BigDecimal calculateDiscount(String orderId, BigDecimal amount) { // 构建事实对象 Order order = new Order(); order.setId(orderId); order.setAmount(amount); order.setDiscountRate(BigDecimal.ONE); // 初始为 1.0(无折扣) // 创建命令列表 List<Command<?>> commands = new ArrayList<>(); commands.add(KieCommands.get().newInsert(order, "order")); commands.add(KieCommands.get().newFireAllRules()); commands.add(KieCommands.get().newGetObject("order")); // 执行命令 ServiceResponse<ExecutionResults> response = client .getServicesClient(CommandExecutorClient.class) .executeCommandsWithResults("discount-rules_1.0.0-SNAPSHOT", commands); if (response.getType() == ResponseType.SUCCESS) { ExecutionResults results = response.getResult(); Order resultOrder = (Order) results.getValue("order"); return resultOrder.getDiscountRate(); } else { throw new RuntimeException("Rule execution failed: " + response.getMsg()); } } }

逻辑说明:

  • KieServicesClient是线程安全的,建议单例复用;
  • newInsert(..., "order")的第二个参数必须与 REST 请求中的out-identifier一致;
  • executeCommandsWithResults(...)返回泛型ExecutionResults,通过getValue("order")获取结果对象,类型安全;
  • 错误处理不可省略:response.getType()为FAILURE时,response.getMsg()包含具体错误(如容器未启动、规则编译失败)。

5. 规则调试与排错:五个血泪经验总结的高频翻车点

规则引擎的「黑匣子」特性让初学者极易陷入「规则写了但没生效」的困境。下面五条是我在多个模拟项目 X 和某跨平台系统中反复踩过的坑,按发生频率排序,每条都附带可复现的现象、根本原因和一招解决法。

5.1 现象:规则文件保存后,Business Central 显示「No changes to commit」,部署按钮灰色

  • 原因:BC 的 Git 仓库未初始化,或当前分支处于「detached HEAD」状态(常见于从 ZIP 启动后首次操作)。BC 依赖内嵌 Git 管理规则版本,未初始化则无法追踪变更。
  • 解决:进入项目页面 → 点击右上角Settings(齿轮图标)→ Repository → Initialize Repository。初始化后,所有新建/修改的资产会自动进入暂存区,「Deploy」按钮变亮。

5.2 现象:REST 调用返回401 Unauthorized,即使用户名密码正确

  • 原因:Kie Server 的安全域(security domain)配置被意外覆盖。drools-distribution-7.48.0.Final默认使用ApplicationRealm,但若之前运行过其他 WildFly 应用,standalone/configuration/application-users.properties文件可能被污染。
  • 解决:删除business-central/standalone/configuration/application-users.properties和application-roles.properties两个文件,然后重启start-business-central.sh/.bat。脚本会自动重建默认 admin 用户。

5.3 现象:规则中amount >= 500总是不匹配,但amount > 499可以

  • 原因:amount字段类型为Double或Float,导致500.0 == 500在二进制浮点表示下不精确。Drools 的数值比较基于 JavacompareTo(),对double有精度陷阱。
  • 解决:严格使用BigDecimal作为金额字段类型(如 3.2 节所示),并在 DRL 中用字符串构造new BigDecimal("500")。这是金融类规则的铁律,没有例外。

5.4 现象:部署成功,但 REST 调用返回404 Not Found,提示Container not found

  • 原因:容器 ID 名称拼写错误。BC 自动生成的容器 ID 是{artifactId}_{version}(如discount-rules_1.0.0-SNAPSHOT),但开发者常误写为discount-rules或discount-rules:1.0.0-SNAPSHOT(冒号是 Maven 坐标分隔符,非容器 ID)。
  • 解决:调用GET /kie-server/services/rest/server/containers获取真实容器 ID 列表,复制粘贴,勿手敲。容器 ID 区分大小写。

5.5 现象:规则执行后,discountRate值未改变,update($order)似乎无效

  • 原因:update($order)调用前,$order对象未被修改,或修改后未调用update()。Drools 的update()仅通知引擎「该事实状态已变」,不负责刷新值;若对象本身未 set,update()是空操作。
  • 解决:在then块中,确保先setXXX()再update($fact)。可在then块末尾加日志:System.out.println("Updated order: " + $order);,确认修改已发生。

注意:以上五条均经过drools-distribution-7.48.0.Final.zip环境实测。它们不是理论推测,而是从日志堆栈、Wireshark 抓包和断点调试中抠出来的确定性结论。遇到问题,优先对照这五条排查,能节省 80% 的调试时间。


6. 进阶技巧:用 Kie Scanner 实现规则热更新,告别每次改规则都重启服务

在真实业务中,「改个促销规则要停服 5 分钟」是不可接受的。Drools 7.48.0.Final 内置的Kie Scanner组件,能让 Kie Server 自动监听 Maven 仓库中 KJAR 的版本变化,并在检测到新版本时无缝热更新容器——整个过程不中断现有请求,旧规则实例继续执行,新请求自动路由到新规则。这是drools-distribution-7.48.0.Final.zip最被低估的生产级能力。

6.1 启用 Kie Scanner:修改 Kie Server 配置

Kie Scanner 默认关闭,需手动开启。编辑kie-server/standalone/configuration/standalone.xml,找到<subsystem xmlns="urn:jboss:domain:kieserver:2.0">节点,在其内部添加<scanner scan-interval="10"/>:

<subsystem xmlns="urn:jboss:domain:kieserver:2.0"> <configuration> <!-- 其他配置保持不变 --> </configuration> <scanner scan-interval="10"/> </subsystem>

scan-interval="10"表示每 10 秒扫描一次 Maven 仓库。值越小响应越快,但增加 I/O 开销;生产环境建议30或60。

逻辑说明:Kie Scanner 的工作原理是轮询本地 Maven 仓库(~/.m2/repository/)中对应 Group ID 和 Artifact ID 的最新版本。它不依赖网络,完全离线,因此drools-distribution-7.48.0.Final.zip的离线部署特性与之天然契合。

6.2 构建并发布新版 KJAR:用 Maven 命令触发热更新

假设你已在 BC 中修改了规则,现在要发布新版本。不要点 BC 的 Deploy 按钮——那会触发完整构建和容器重启。正确做法是:

  1. 在项目根目录(含pom.xml)执行:
mvn clean install -DskipTests

此命令将discount-rules构建为 KJAR,并安装到本地 Maven 仓库。

  1. 修改pom.xml中的<version>,例如从1.0.0-SNAPSHOT改为1.0.1-SNAPSHOT,再次执行:
mvn clean install -DskipTests
  1. 此时,Kie Server 日志中会出现类似记录:
INFO [org.kie.scanner.KieRepositoryScannerImpl] (pool-11-thread-1) Scanning for KJAR updates... INFO [org.kie.scanner.KieRepositoryScannerImpl] (pool-11-thread-1) Found newer version of KJAR: com.example.rules:discount-rules:1.0.1-SNAPSHOT INFO [org.kie.server.services.impl.KieServerImpl] (pool-11-thread-1) Updating container 'discount-rules_1.0.0-SNAPSHOT' with new release id 'com.example.rules:discount-rules:1.0.1-SNAPSHOT'

参数说明:-DskipTests跳过单元测试,加速构建。Kie Scanner 只关心groupId:artifactId:version三元组,SNAPSHOT后缀是必需的,它代表「可变版本」,Scanner 才会持续检查更新。

6.3 验证热更新生效:不重启、不中断的平滑过渡

热更新完成后,无需重启 Kie Server,也无需重新部署容器。直接用之前的 REST 请求调用,即可获得新规则的结果。更关键的是,正在执行的旧规则实例不受影响——Kie Server 采用「新旧容器并存」策略:新请求路由到新容器,旧请求继续在旧容器中完成。这种设计保证了事务一致性。

你可以通过以下命令确认容器版本已升级:

curl -X GET "http://localhost:8080/kie-server/services/rest/server/containers/discount-rules_1.0.0-SNAPSHOT" \ -H "accept: application/json" \ -u 'admin:admin'

响应中的"release-id"字段会显示为"com.example.rules:discount-rules:1.0.1-SNAPSHOT"。

我的习惯:在某图像处理 Demo 的风控模块中,我将 Kie Scanner 的scan-interval设为60,并配合 Jenkins 的mvn deploy将 KJAR 推送到 Nexus 私服。这样,业务方只需提交规则变更到 Git,CI 流水线自动构建发布,Kie Server 在 1 分钟内完成热更新。整个过程对上游服务完全透明,这才是规则引擎该有的样子。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 17:06:14

Kubernetes Deployment YAML 核心字段与滚动更新实践指南

1. 从实例出发&#xff0c;看懂 Deployment YAML 的全貌拿到一个 Kubernetes Deployment 的 YAML&#xff0c;很多新手的第一反应是“字段太多了&#xff0c;不知道哪些必须改&#xff0c;哪些可以不管”。这个感觉非常正常&#xff0c;因为 K8s 的 YAML 本质上是一份“声明式配…

作者头像 李华
网站建设 2026/10/20 17:06:10

AI芯片软硬件协同设计:架构选型、性能调优与量产实战

1. AI芯片软硬件协同设计的整体思路拆解1.1 为什么软硬件必须一起设计做AI芯片这行的人都有一个共识&#xff1a;芯片设计不再是单纯的硬件活儿。十年前做芯片&#xff0c;硬件团队把RTL写好、验证通过、流片回来&#xff0c;软件团队再慢慢适配驱动和框架&#xff0c;这种串行…

作者头像 李华
网站建设 2026/10/20 17:05:34

RunC升级避坑指南:底层容器运行时替换的关键细节

一提到 RunC 升级&#xff0c;很多刚进这行的朋友第一反应是“这东西不就是给容器垫底的吗&#xff0c;有必要单独折腾吗”。但真正在生产环境里被底层 Runtime 坑过的人&#xff0c;听到 RunC 升级这四个字&#xff0c;往往比听到业务代码出 Bug 还要紧张。这一层不像镜像或编…

作者头像 李华
网站建设 2026/10/20 17:05:03

大模型+数据分析十大案例拆解:NL2SQL、ChatBI与Agent实战

简介&#xff1a;《2024中国大模型数据分析最佳实践案例TOP10报告》是一份聚焦大模型与数据分析深度融合的行业研究资料&#xff0c;适合企业数字化转型负责人、数据分析师、商业智能开发者以及关注AI落地的研究者阅读。报告按趋势、案例、展望三大板块组织内容&#xff1a;先从…

作者头像 李华
网站建设 2026/10/20 17:04:46

量化交易为何必须“套上笼头”?从速度优势到策略约束的深度解析

1. 先说清楚&#xff1a;量化的“不公平”到底从哪里来&#xff1f;量化交易在A股市场这几年算是站在风口浪尖上了。提起“量化”&#xff0c;有人想到的是惊人的换手率和亮眼的超额收益&#xff0c;有人想到的则是“不公平”三个字。我自己做量化策略开发接近十年&#xff0c;…

作者头像 李华
网站建设 2026/10/20 17:04:01

Cocos安卓打包ANT配置全攻略:JDK/SDK/NDK版本匹配与避坑指南

简介&#xff1a;这份资源面向在Mac环境下进行Cocos游戏开发的工程师&#xff0c;聚焦安卓打包环节中ANT工具的完整配置流程&#xff0c;帮助解决从项目编译、签名到生成APK过程中环境搭建与参数调整的实际问题。压缩包共1634个文件&#xff0c;约9.12MB&#xff0c;以1525个ht…

作者头像 李华