ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

App Inventor离线服务器版Windows部署教程:解决机房网络卡顿

App Inventor离线服务器版Windows部署教程:解决机房网络卡顿 简介面向 App Inventor 2019 课堂教学与二次开发的汉化版服务器端资源包适用于中小学信息技术教师、培训机构及希望搭建本地 AI 实验环境的学习者。该版本由 roadlabs 完成汉化重点解决了手机 AI 伴侣与开发电脑跨网段连接的问题并加入组件/代码块筛选、组件搜索、触屏模式、类事件块、画布画弧与多边形等更新方便课堂集中演示和移动端编程实践。资源包共 7040 个文件压缩后约 421MB以 html、js、jar、class、png、gif、exe、txt 等为主html/js 用于浏览器界面与前端交互jar/class/java 构成服务端逻辑png/gif 为界面图标exe 便于 Windows 启动另附 MITAI2Companion.apk 等配套文件。已有 836 人浏览学习适合需要快速搭建汉化版 App Inventor 服务器、开展校本课程或实验教学的读者直接取用。 如果你在学校机房里带过一次 App Inventor 的课大概率经历过这种场景全班二三十台电脑同时打开 MIT 官网网页加载半天学生拖一个积木块能卡三秒好不容易进了 Designer 页面又提示服务器超时重新登录再来一轮。更别提到了机房断网的时候整节课直接没法上。我最早也被这个问题折磨得不轻后来转到“服务器版”方案才算是把课堂稳定性这个老大难问题解决了。今天想聊的这个 AppInventor2019ServerEdition-Win.zip就是这几年教师圈里比较常用的一个 Windows 部署包。这个包把 MIT App Inventor 的开源服务器端组件打包成了一个 zip解压到本地 Windows 机器上就能在机房内网跑起一套完整的 App Inventor 环境。学生端浏览器访问本地服务器地址不再依赖外网组件加载、积木保存、AI Companion 连接、APK 编译全部走内网。整个部署过程不需要 Linux 基础Windows 10 或者 Windows Server 2019 都能跑。准备折腾离线版 App Inventor 的老师、想知道“服务器版和在线版到底差在哪”的初学者都可以照着这篇文章操作。因为 2019 这个版本比较特殊网上流传的包来源也不止一个有些目录结构、启动脚本多少有点差异。我会按最常见的那种打包方式来讲同时把容易踩的坑单独列出来避免你拿着包对着教程发现对不上。1. 项目概述这个包到底在解决什么问题1.1 在线模式为什么会被“卡脖子”App Inventor 在线版本身设计得很轻量网页端做界面设计和积木逻辑真正编译 APK 的时候由远端 build server 执行。问题在于网络环境是不可控的。上课时间集中在上午第几节大家都挤在同一个时间段访问网络延迟一旦上去学生端就会出现积木块加载不全、保存失败、AI Companion 扫码后一直转圈这类现象。尤其到了要用“实时连接”调试的时候手机端和服务器端的握手请求频繁网一卡整节课的节奏全乱掉。本地服务器版把 web server、build server 全部拉到教室的同一台 Windows 机器上学生访问的是http://192.168.x.x:8888数据包只在局域网内跑一圈。这样就把外部网络波动带来的影响降到最低。你可以把在线版理解为去市中心办事路上堵不堵车不由你控制服务器版是直接在你们小区门口开了一个办事大厅流程没变但通勤时间几乎可以忽略。1.2 包内一般包含哪些内容拿网上最常见的 AppInventor2019ServerEdition-Win.zip 来说解压后大致是这样一个结构AppInventor2019ServerEdition-Win/ ├── appinventor-server.jar # 主服务负责网页端和项目存储 ├── appinventor-buildserver.jar # 编译服务负责生成 APK ├── keystore/ # APK 签名密钥 ├── start-server.bat # 启动脚本可能叫别的名字 ├── MIT AI2 Companion.apk # 手机端测试伴侣 └── README.txt # 部署说明不同渠道打包的细节会不太一样有的把说明文档放得比较深有的把 AI Companion 单独放在 mobile 文件夹里。只要核心的 server jar 和 buildserver jar 在基本都能跑起来。这个版本定位就是给教学场景用的适合学校机房、培训机构、创客实验室也适合想离线研究 App Inventor 源码的个人开发者。2. 部署前准备先检查环境再动手2.1 JDK 安装与环境变量配置要点App Inventor 2019 服务器版基于 Java 开发所以要先把 JDK 装好。注意这里说的是 JDK不是 JRE。JRE 虽然能跑主服务但 build server 编译 APK 的时候密钥管理、签名工具这些操作都需要 JDK 里的工具装全 JDK 最省心。JDK 8 是兼容性最稳的选择JDK 11 在某些版本上也能跑但为了避免不必要的兼容性折腾建议直接装 JDK 8。安装完 JDK 之后有一个关键操作配置系统环境变量。Windows 系统不会因为你装了 JDK 就自动帮你配好JAVA_HOME需要手动操作。注意Win R 打开运行窗口输入sysdm.cpl回车进入“高级 → 环境变量”。点击“新建”系统变量变量名填JAVA_HOME变量值填 JDK 的安装路径比如C:\Program Files\Java\jdk1.8.0_202。然后在Path变量中新增%JAVA_HOME%\bin。配置完成后验证一下。Win R 输入cmd回车在命令行里执行java -version如果正确输出了 java 版本信息说明环境变量没问题。如果提示“不是内部或外部命令”优先检查JAVA_HOME路径是否填对、Path 里是否真的加上了%JAVA_HOME%\bin而不是只加了个JAVA_HOME字样。2.2 解压路径与杀毒软件“冲突”这个包解压后路径里不要出现中文、空格和特殊符号。比如D:\AppInventorServer可以D:\软件\App Inventor 服务器就容易出问题。因为启动脚本对路径分隔符和空格的处理很敏感一旦路径带空格脚本里拼接的 Java 命令找不到 jar 包就会闪退。我一个同事的机房里就遇到过把包放在D:\Program Files下面结果因为路径里的空格启动脚本直接退出排查了半下午才发现是这个原因。另外Windows 自带的 Defender 或者第三方杀毒软件很可能会把启动脚本调用 Java 进程识别为可疑行为。尤其是一些精简优化版系统会把 java.exe 的进程行为监控得很严。建议把解压目录加入杀毒软件白名单否则哪天服务启动到一半进程被杀掉学生那边就是一片“无法访问此网站”。顺便提一个容易忽略的问题如果系统里装了“win工具箱”之类的系统优化工具最好提前卸载干净。这类工具经常自作主张改掉系统服务状态或者环境变量导致 Java 相关进程异常。卸载完之后重启一次系统再继续部署能省掉后面很多莫名其妙的问题。3. 服务器部署实操从解压到学生能访问3.1 启动主服务与确认端口解压完成后找到启动脚本。常见的名字是start-server.bat有的包会区分start-server.bat和start-buildserver.bat需要两个都启动。如果没有现成脚本也可以手动执行java -jar appinventor-server.jar打开命令行窗口切到解压目录执行上面这条命令即可。默认端口是 8888启动成功后控制台会滚动日志最后停在类似Server started的状态。此时不要关闭这个黑色窗口关掉就相当于服务停了。3.2 本机验证与局域网访问服务器启动后先在服务器本机浏览器访问http://localhost:8888如果在浏览器看到 App Inventor 的登录界面说明主服务正常。接下来要让学生机能访问需要做两件事放行防火墙端口确认服务器的局域网 IP。Windows 防火墙默认会拦截外部对 8888 端口的访问。打开“控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则”选择“端口”协议选 TCP特定本地端口填 8888然后“允许连接”一路下一步即可。接着在命令行执行ipconfig记下当前网卡的 IPv4 地址一般是192.168.x.x这种格式。学生在自己的电脑浏览器输入http://服务器IP:8888就能打开登录页。3.3 管理员账号与初始化设置首次访问登录页后不同打包版本的处理方式不太一样。有的内置管理员账号比如admin/appinventor有的需要你在页面上自己填一个管理员邮箱然后通过邮件验证激活。因为这是离线环境邮件验证多半是走不通的所以碰到要求验证的包优先查看压缩包内的 README 或部署说明里面一般会写明默认账号或者激活方式。登录成功之后建议第一时间更改默认密码。虽然是内网环境但机房里的学生好奇心都很强保不齐有人拿默认密码登录之后乱建项目。管理员密码改掉再关掉不需要的账号注册入口能省很多课堂管理上的麻烦。4. 跑通第一个应用从建项目到真机调试4.1 Designer 界面的基础操作服务器能访问之后就开始正式使用。用管理员账号或者学生账号登录点击Projects → Start new project输入项目名称。项目名限制比较严格只能用英文字母、数字和下划线而且不能以数字开头最好统一约定成Lesson01这种格式避免学生乱起名。进入 Designer 页面后左侧是组件面板中间是手机屏幕预览区右侧是属性面板。从组件面板拖一个Button和一个Label到预览区右侧属性面板里把 Button 的 Text 改成“点击我”然后切换到底部的Blocks页签给 Button 添加一个Click事件在事件里设置Label.Text为一段文字。这是最经典的入门案例用来验证整条链路是否通畅。4.2 AI Companion 连接手机调试在网页端点击Connect → AI Companion会弹出一个二维码窗口。手机端安装包内自带的MIT AI2 Companion.apk打开后点击“扫描二维码”对准电脑屏幕上的二维码几秒钟后手机预览区就会同步显示正在设计的界面。这里有个前提手机和电脑必须处于同一个局域网。机房如果没有 WiFi可以用一台无线路由器接到机房的交换机上或者直接用电脑开启移动热点。需要注意的是如果路由器开了“访客网络隔离”之类功能手机虽然能连上 WiFi但没法访问电脑的 IP会出现扫码之后一直连接不上的情况。部署时最好把“AP 隔离”关掉或者直接让所有设备连同一个 SSID。4.3 构建 APK 与 build server 的关系调试完成之后点击Build → Android App (apk)系统会调用 build server 进行编译。第一次构建通常要等一到两分钟编译成功后浏览器会自动下载 APK 文件。如果包内的 server 和 buildserver 是分离的要确认两个进程都处于运行状态。提示build server 默认端口是 9990主服务启动时会自动尝试连接。如果在启动脚本里只运行了appinventor-server.jar没有运行appinventor-buildserver.jar项目构建时会一直卡在 Building 状态最后超时。两个命令行窗口都不要关这是整个部署中最容易漏掉的环节。5. 常见问题与排查技巧实录5.1 启动脚本一闪而过或提示 java 不是内部或外部命令这个问题九成是环境变量没配好。先用 Win R 打开运行输入cmd回车执行java -version看有没有正常输出。如果系统本身装了多个 Java 版本比如 JDK8 和 JDK17 同时在 Path 里启动脚本可能选到高版本然后报UnsupportedClassVersionError。建议把环境变量统一指向 JDK8不要同时保留多版本指向。还有一种情况比较隐蔽某些精简版 Windows 系统把Path变量里的系统路径删掉了导致cmd.exe本身都定位不到。现象就是 Win R 输入cmd回车后没反应。临时办法是直接双击C:\Windows\System32\cmd.exe打开命令行永久办法是把%SystemRoot%\system32加回系统 Path。5.2 端口被占用导致服务起不来启动日志如果出现Address already in use: JVM_Bind说明 8888 端口已经被其他进程占用。用下面这条命令查找占用进程netstat -ano | findstr 8888最后一列是 PID在任务管理器里找到对应进程并结束或者直接换一个端口启动。部分版本支持通过启动参数指定端口java -jar appinventor-server.jar --port 8899换端口之后学生访问的地址也要相应变化比如http://服务器IP:8899。5.3 学生端浏览器无法打开登录页先关掉 Windows 防火墙试试如果关掉后能访问说明入站规则没放行成功。再检查服务器 IP 是否填对。机房服务器如果有多块网卡学生访问的必须是当前生效的那张网卡对应的 IP用ipconfig查看。还有一个很低级但很常见的坑服务器脚本窗口被老师顺手关了或者电脑重启之后没有重新启动服务。最好把启动脚本做成快捷方式放到桌面开机后一键启动。5.4 AI Companion 一直连接不上手机端扫码之后长时间转圈按这几个顺序排查手机和电脑是否在同一网段例如电脑是192.168.1.10手机是192.168.8.50中间隔着路由器就属于跨网段需要调整网络位置。AI Companion 版本是否和服务器版本匹配。用包内自带的 APK 安装最稳妥网上随便下的新版 Companion 可能因为协议不同连不上 2019 版服务器。手机是否开启了“私有 DNS”或者全局代理类设置。这类设置会把配对码请求转到外部解析导致握手失败。关掉私有 DNS 之后连接一般能恢复正常。5.5 构建 APK 一直卡住或报 build server error优先检查 build server 进程是否还活着。两个命令行窗口如果有一个被误关了构建必然失败。其次看磁盘剩余空间APK 编译过程需要临时目录C 盘快满的时候也会失败。打开C:\Users\当前用户\AppData\Local\Temp清理一下临时文件给编译留出空间。6. 部署完成后的几个建议6.1 数据备份与后续迁移学生项目默认存储在服务器本地通常在解压目录下会有一个data文件夹里面是项目数据库和上传的资源文件。备份时直接拷贝整个data文件夹即可。如果要换新服务器把data文件夹和keystore文件夹一起迁移过去再用同样的版本启动学生之前做的项目就都还在。6.2 教学场景里的几个实用习惯我用这个版本带过几轮课有几个习惯可以分享给你。给每台学生机浏览器加一个书签直接指向http://服务器IP:8888省得每次上课手输 IP输入错了又卡在登录页。提前用管理员账号把课程需要的示例项目导入服务器上课时直接让学生拷贝而不是现场创建时间能省不少。机房学生机如果装了还原软件记得把浏览器书签和首选项排除在还原列表之外否则每次开机书签都会丢。6.3 资源占用与后续扩展正常五十人规模的机房同时使用服务器端 8GB 内存就够用了。我自己在服务器上开着主服务和 build server系统内存占用大概在 3GB 左右再开几个后台工具也没有压力。这个 2019 版毕竟是几年前发布的包如果你碰到某个新组件无法识别大概率是组件库版本比较老导致的。可以留意 MIT 开源仓库里更新的服务端代码如果只是做常规教学旧版本的稳定性和易用性还是值得继续用的。最后再分享一个实操经验拿到任何来源的 AppInventor 2019 打包文件先解压看 README再按照压缩包内的目录结构来启动不要照搬网上的某一条命令。毕竟打包渠道不同启动脚本、配置文件的位置都可能不一样。把环境配好、服务跑通之后教学工作会轻松很多。本文还有配套的精品资源点击获取
返回列表