如何从MIT源构建App Inventor

个人博客
本文档包含有关如何从源构建App Inventor并在本地计算机上运行或将其上载到App Engine的说明。

 

1.简介

1.1支持的平台

1.2在App Engine上托管您的服务,或在本地运行它

1.3存储用户的项目

1.3登录和验证

1.4您需要提供构建服务器

2.构建App Inventor

2.1概述

2.2 App Inventor源代码

2.3构建App Inventor

2.4配置选项

2.5 App Inventor Companion应用程序

2.6自动化测试

3.在本地计算机上运行App Inventor(MacOS)

3.1设置的MacOSX系统:所需软件

3.2启动App Inventor

3.3在本地计算机上启动构建服务器

4.构建和启动App Inventor(GNU / Linux)

4.1设置GNU / Linux系统:所需软件

4.1.1关于Ubuntu 14.04.1 LTS 64位的注释

4.2构建App Inventor并在本地计算机上启动它(GNU / Linux)

5.构建和启动App Inventor(Windows)

5.1设置的Windows系统:所需软件

5.3在本地计算机上启动构建服务器

6.设置构建服务器

6.1创建buildserver软件包

6.2在buildserver计算机上安装软件并启动构建服务器。

7.在Google App Engine上部署App Inventor

7.1在App Engine上部署之前需要考虑的问题

7.1.1 Java和App Engine版本

7.1.2 App Engine托管; 获取应用程序ID

7.1.3用户登录和认证

7.1.4用户项目的存储

7.1.5构建服务器

7.1.6 App Engine使用费

7.2构建和部署App Inventor和构建服务器

7.2.1构建App Inventor并将其部署在appspot.com上

7.2.2将您的服务部署到appspot.com

7.2.3将实例配置为云集成项目

7.2.4设置构建服务器并配置App Inventor服务以使用它

8. App Inventor服务的配置选项

8.1设置白名单

8.2当天的消息

8.2.1启用当天的消息

8.2.2设置当天消息的文本

8.3服务条款

9.构建服务器的配置选项

9.1版本号匹配

9.2检查构建服务器状态信息

9.3更改构建服务器端口号

9.4指定最大同时构建数

9.5限制允许的App Engine主机

10.使用外部构建服务器在本地运行App Inventor

11.加快开发的一些提示和技巧

 

1.简介

App Inventor for Android允许人们通过在Web浏览器中拼凑编程块来为Android手机创建应用程序。本文档是使用MIT源代码构建和部署您自己的App Inventor服务的指南。它假设您已经拥有使用App Inventor构建应用程序的一些经验,例如,使用MIT App Inventor服务。现在您已经使用了App Inventor,您可能希望构建自己的服务供个人使用,或与几个朋友共享,或作为开发App Inventor系统开发的前奏。

 

本文档重点介绍App Inventor 2,但在需要时将突出显示与App Inventor classic的任何差异。   [*** App Inventor classic于2015年撤销。已过时。它可能不会再构建。***]

 

如果你熟悉git和github,你可以看到Contributing to App Inventor 2  幻灯片,以便快速启动和运行指南

 

1.1支持的平台

可以使用MacOSX,GNU / Linux和Windows操作系统来构建和部署App Inventor服务器,我们已在麻省理工学院广泛开展此项工作。如果您遇到任何问题,请联系开源组

 

1.2在App Engine上托管您的服务,或在本地运行它

App Inventor是基于Google App Engine构建的Java服务与任何App Engine服务一样,您可以将App Inventor服务部署到appspot.com上的Google App Engine基础架构,以便Web上的任何人都可以访问它,只要您授予他们权限即可。如果您打算这样做,我们建议您使用App Engine和Java中的Java App Engine服务获得一些经验。Google提供了教程,向您展示如何安装App Engine for Java并创建简单的服务。 

 

您还可以使用App Engine“dev server”在本地计算机上运行App Inventor服务,以进行个人测试和调试,即使您未连接到网络也是如此。也可以让您的开发服务器可供本地网络上的少量用户使用,但开发人员服务器并非设计用于处理大量负载,我们不建议使用它来为少数用户提供可靠的App Inventor服务。用户 (有些人在开发服务器上运行App Inventor服务有很多经验,最多有40个用户,尽管这是一个功能强大的服务器机器,而不是笔记本电脑。)

1.3存储用户的项目

您的App Inventor服务将维护单个用户项目的存储,包括源代码和已编译的应用程序(APK文件)。如果您在那里部署App Inventor服务,则此存储将托管在Google App Engine上,如果您使用开发服务器,则存储在本地计算机上。在任一情况下

请记住,此存储是服务的一部分:如果您的服务消失,或者您清除了数据库,则存储的用户项目将会消失。这是一个好主意,   建议用户备份副本下载 他们的项目对他们的个人计算机在您需要重建的服务情况。 

 

特别是如果升级开发人员工具(App Engine SDK)的版本,本地开发服务器中的项目可能会被删除,因为它们的存储方式因App Engine SDK的某些版本而异。App Engine服务中的项目存储更加强大,并且通常不会消失,除非App Inventor中存在损坏它们的错误(可能会发生!)。

1.3登录和验证

您的用户需要登录App Inventor服务并提供用户名或其他标识符。目前只有两种登录选项:

  1. 如果您在appspot.com上托管该服务,则用户应使用其Google帐户登录。
  2. 如果您在本地服务器上托管服务,则用户可以使用任何名称登录,并且没有身份验证(无密码)   因此,用户可以读取和编写彼此的项目,前提是他们知道登录名。因此,此选项目前仅适用于您的个人测试或少数密切合作的人员。

 

1.4您需要提供构建服务器

App Inventor服务使用辅助构建服务器 来处理编译和打包应用程序的计算密集型工作。如果您在本地计算机上运行App Inventor,则该计算机可以充当其自己的构建服务器。如果在appspot.com上部署App Inventor服务,则需要获取并配置要作为构建服务器运行的计算机。构建服务器计算机必须是托管App Inventor服务的计算机可访问的计算机。特别是,对于在appspot.com上运行的服务,构建服务器必须位于公共Internet上,以便AppEngine可以访问它。也可以为本地(而非appspot.com)App Inventor服务指定单独的构建服务器计算机。

 

目前,Oracle Java 6 7是运行Build Server的唯一选择。这是因为应用程序的结果包必须通过'jarsigner'实用程序进行签名,该实用程序仅适用于Oracle SDK。目前,无法使用其他JDK(如OpenJDK)运行Build Server,即使它是Ubuntu Linux的默认安装。如果您运行的是Ubuntu,请确保卸载Open JDK,或者正确安装Oracle的JDK并更新所有路径。请注意,您需要一个完整的JDK来运行App Inventor,JRE本身不起作用。我们希望在不久的将来会有所改变。

2.构建App Inventor

本节介绍如何构建和运行App Inventor服务。构建App Inventor服务后,您可以在本地服务器上运行它或将其部署到appspot.com。   您还需要提供构建服务器,方法是将App Inventor计算机本身用作构建服务器,或者提供单独的计算机。

2.1概述

 

App Inventor源保存在存储库mit-cml / appinventor-sources中的Github上。你应该从那里开始工作,并使用git构建系统。有关建筑操作的概述,请参阅

 

https://github.com/mit-cml/appinventor-sources/blob/master/README.md

 

该概述是一个很好的起点,它涉及更详细的说明,包括本文件。

 

2.2 App Inventor源代码

注意:如果您打算与源工作,回到项目贡献,而不是克隆 在本节介绍了这个项目,你应该 它来代替。有关如何在文档中执行此操作的更多信息:使用git和github开发App Inventor

 

App Inventor源代码可作为免费和开源软件提供,您可以下载。一旦安装了第3节中列出的其他软件,就可以通过从shell运行以下git命令来克隆源代码的git存储库:

  git clone https://github.com/mit-cml/appinventor-sources.git 

 

这将创建一个名为“appinventor-sources”的文件夹,其中包含源(以及存储库的副本)。如果您对此命令有疑问,请访问MIT移动学习中心github网站:https://github.com/mit-cml 

 

我们将在其余的这些说明中将此文件夹称为appinventor父文件夹  appinventor父文件夹还包含一个名为sample-.gitignore 的文件这个文件应该被复制到另一个名为.gitignore的 文件中,它会使生成的文件不被添加到git索引中(注意文件将在重命名后隐藏在finder和终端中。你可以查看它通过标志-a  到的LS  命令:LS -al )。

 

还需要将Blockly作为依赖项检出,并且可以通过发出以下命令(来自appinventor-sources文件夹)来完成:

  git submodule update --init

 

如果您打算对MIT CML的Blockly fork进行更改,请按照自述文件中的说明进行操作

2.3构建App Inventor

截至2013年9月10日,MIT App Inventor的所有未来发展都面向App Inventor 2.为此, 分支现在是App Inventor 2 的代码有关麻省理工学院团队遵循的开发工作流程的快速指南,请查看通过github  幻灯片进行的贡献如果您打算在App Inventor 1上工作,那么 github中的分支ai1 就是您要寻找的。

 

使用上面设置的所有内容,连接到appinventor-sources  父文件夹。它包含一个名为appinventor 的子文件夹,我们将此文件夹称为appinventor文件夹 

 

现在您可以运行命令:

ant clean

 

每次构建时都不需要清理,但是在构建之前每次清理都是个好主意,以防一些垃圾进入各种构建目录。请再次注意,如果您清理,所有项目都将消失,因此请确保在清理之前有项目副本。另请注意,如果清理,编译过程将花费更长时间(ant仅构建增量更改,但clean会删除所有可用的打包项目)。

 

App Inventor系统需要一个名为“authkey”的密钥。如果更改此密钥,所有用户在更新服务时都会发现自己已注销。要使此密钥保持不变,它将存储在计算机主目录中的目录名“.appinventor”中,而不是存储在App Inventor源中。如果您之前从未构建过App Inventor,则需要创建此密钥。通常,即使您删除App Inventor源并重新下载它们,也只需要执行一次此操作。

 

要构建此密钥,请执行:

$ ant MakeAuthKey

 

如果您忘记了此步骤,则在下一步中将出现错误。如果您这样做,只需执行“MakeAuthKey”步骤并重新执行以下步骤即可。

 

清理完成后,可以通过运行命令来构建App Inventor

ant

 

建筑应该需要几分钟,然后结束消息BUILD SUCCESSFUL。如果出现问题,很可能是ant或Java或App Inventor源的问题。

2.4配置选项

如果要构建App Inventor以在本地计算机上进行部署以进行测试或个人使用,则可以运行该系统。如果要部署到appspot.com,则需要设置构建服务器并为构建服务器和App Inventor服务本身指定一些配置选项。我们将在下面描述这些选项,但如果这是您第一次构建App Inventor,您应该立即继续并在本地计算机上亲自尝试。

 

2.5 App Inventor Companion应用程序

App Inventor Companion应用程序用于逐步构建应用程序。Companion包含系统中可用的所有组件,因此每当组件发生更改时,Companion也必须更改当您构建系统(上图)时,Companion应用程序应该已构建并保留在./build/buildserver/MIT \ AI2 \ Companion.apk中。

 

要安装Companion,请确保“adb”命令位于执行路径中(因此,如果键入“adb”,则会收到使用消息而不是“未找到命令”错误)。通过USB连接设备,您可以发出命令:

 

$ ant installplay

 

这将卸载手机上任何以前版本的AI2 Companion并安装新版本。

 

请注意,App Inventor 2和App Inventor 1存在两个不同的Companion。此处的说明构建了App Inventor 2的Companion。

 

您也可以手动构建Companion(例如,用于分发)。为此,您可以使用目标:

$ ant PlayApp

 

appinventor  文件夹中,随机数生成于:

./build/buildserver/MIT AI2 Companion.apk

 

有关如何手动构建随播广告的视频,您可以阅读此博文(注意:此博客文章是在我们使用“installplay”构建目标构建Companion之前制作的)。

 

注意:第一次构建Companion时,系统将在主目录的.appinventor子目录中创建一个“debug”android密钥库。然后,此密钥库将用于对Companion进行数字签名(Android程序包构建过程的一部分)。这意味着您可以更新Companion的副本,而无需手动卸载以前的版本,前提是您还构建了以前的版本。

 

如果您从Google Play或直接从生产App Inventor服务安装了Companion,则必须手动卸载该版本,因为它是由我们的生产密钥签署的。同样,当您完成开发并希望从Store重新安装Companion时,您必须先手动卸载自己的版本。

2.6自动化测试

App Inventor源包含许多不同级别或自动化的自动化测试(从单元到功能)。Java代码的测试是使用JUnit  框架编写的,并且不需要额外的库来运行它们(JUnit包含在appinventor / lib文件夹中)。JavaScript代码的测试依赖于PhantomJS,并且此工具需要在PATH中可用。有关这些测试的更多信息,请参阅本自述  文件。

 

JavaScript测试连接到整个ant脚本,并将与Java测试一起运行。要运行它们alls,您可以运行命令:

$ ant测试

 

在更改任何代码之前和之后运行所有测试非常重要,但如果您只打算使用源代码(而不是修改它们),则运行测试是确保事情仍然有效的好方法。

3.在本地计算机上运行App Inventor(MacOS)

本节介绍如何在本地计算机上运行App Inventor以进行开发和测试。  

在尝试使用App Inventor之前,您需要安装App Inventor设置软件,就像使用MIT App Inventor一样。用户和开发人员的设置软件是相同的:如果您已在计算机上使用MIT App Inventor 1,则无需执行任何额外操作即可使用本地版本。请注意,App Inventor 2的软件包仍在进行中。可以通过设置页面获得Mac版本文档  介绍如何访问和使用App Inventor 2的最新版本的设置工具。

 

3.1设置MacOSX系统:所需软件

在开始使用App Inventor之前,您需要以下软件:

  • Java:您需要Java 7. App Inventor尚未使用Java  8 构建。您可以通过在shell中键入“java -version”来检查您的版本。警告。为了让事情变得混乱,Java 7也称为Java 1.7,后面是次要版本号。截至今天(2015年1月2日),您应该使用版本1.7.0_72,
  • Apache蚂蚁:1.8。1或1.8。在shell中键入“ant -version”以检查您的版本。如果您没有运行正确的版本,则可能必须从Web获取
  • bash:您应该将bash作为shell运行。
  • PhantomJS。您需要安装它才能运行单元测试:http//phantomjs.org/

另外,你需要

  • Git:我们建议您使用git  分布式版本控制系统来管理源代码大多数Linux发行版都附带Git,您也可以从http://git-scm.com下载并构建它。    
  • Google AppEngine Java SDK。https://developers.google.com/appengine/downloads获取并安装SDK的Java版本记下安装它的文件夹。我们将 在下面的说明中将此文件夹称为appengine SDK文件夹(如果您打算使用Eclipse和Android插件进行一些开发,可以直接从插件安装SDK)。 
  • Python也是一个依赖项,但它在大多数OSX安装中都是默认的。

3.2启动App Inventor

您可以通过连接到appinventor文件夹并运行命令来启动本地App Inventor服务(在一行上)

 

注意:下面对1.9.36的引用只是一个例子。sdk的版本经常更改。因此,请将下面的1.9.36替换为您上面下载的版本号。

 

<你的appengine SDK文件夹> /appengine-java-sdk-1.9.36/bin/dev_appserver.sh --port = 8888  --address = 0.0.0.0 <your-appinventor-folder> appengine / build / war /

 

其中<your appengine SDK folder> 是安装App Engine SDK的路径,并将“1.9.36”替换为您正在运行的Appengine SDK版本号。

 

注意:定期下载最新版本的SDK是个好主意。您可能还想创建一个名为appengine-java-sdk的链接,链接到最新版本,并在启动命令中使用该链接,这样您在更新SDK版本时就不必更改命令。

 

 注意:确保dev_appserver.sh文件是可执行的。)

 

您可以更改端口号以及AppEngine SDK和App Inventor目录的位置以适合您的系统配置。--address  标志是AppEngine上的功能,让其他计算机连接到服务器在Web上。

 

shell窗口将在服务器运行时打印状态信息。您可能希望将其保留为故障排除日志。为方便起见,您可能希望将服务器设置为分离运行,并使用命令行(全部在一行上)将其输出保存到日志中,如:

 

nohup <your-appengine-SDK-folder> /appengine-java-sdk-1.9.36/bin/dev_appserver.sh --port = 8888 --address = 0.0.0.0 <your-appinventor-folder> / appengine / build / war /> serverlog.out&

 

你会发现创建一个运行这个命令的shell脚本很有用,可以省去一遍又一遍地输入它的麻烦。

 

运行此命令并在系统启动时等待约30秒。(您可以按照日志中的进度进行操作。)然后浏览到localhost:8888,您应该看到App Inventor正在运行。本地网络上的人也应该能够通过浏览到<您的IP地址> :8888 来使用它

 

通过创建一些项目来测试系统。这应该是一个几乎完全正常工作的App Inventor系统..您应该能够打开Blocks编辑器,连接手机或模拟器,下载和上传文件 - 简而言之,包装应用程序以外的所有内容。您需要一个构建服务器来打包应用程序。

 

3.3在本地计算机上启动构建服务器

您需要设置构建服务器。您可以使用本地计算机作为构建服务器。您还可以将其他计算机指定为构建服务器,如下面的“   设置构建服务器”中所述要在本地计算机上启动并运行构建服务器,请打开一个新shell,连接到App Inventor目录的buildserver子目录

        cd 你的appinventor目录

        cd buildserver

 

并运行

 

ant RunLocalBuildServer

 

如果一切都成功,您应该看到结束的输出

        [java]服务器正在运行

        

与App Inventor服务器一样,您可能希望使用以下命令行维护日志并运行分离:

 

cd~ / appinventor-build / appinventor / buildserver

nohup ant RunLocalBuildServer> ../../buildserver-log.out&

 

在构建项目时,观察buildserver输出以查看它在打包中经历的步骤以及验证事情是否正在运行是很有用的。打包可能需要很长时间,特别是如果您使用小型机器构建服务器。

 

您可能希望创建一个shell脚本,该脚本与上面启动App Inventor的命令一起运行此命令,因此您可以启动App Inventor并使用单个命令启动构建服务器以进行测试和调试。

 

您可以通过查看日志或使用Web浏览器查看某些状态信息来验证构建服务器是否正在运行。浏览

本地主机:9990 / buildserver /瓦尔

 

将显示有关服务器及其运行的计算机的一些状态信息。另外,浏览到

本地主机:9990 / buildserver /健康

 

 如果服务器正在运行,应该响应OK 

4.构建和启动App Inventor(GNU / Linux)

本节介绍如何在运行GNU / Linux操作系统的计算机上构建和运行App Inventor服务。构建App Inventor后,您可以在计算机的开发服务器上运行它以进行测试和开发,也可以将其部署到appspot.com。您还需要创建一个构建服务器。这里的步骤几乎与MacOS的步骤相同。

在尝试使用App Inventor之前,您需要安装App Inventor设置软件,就像使用MIT App Inventor一样。用户和开发人员的设置软件是相同的:如果您已 在计算机上使用MIT App Inventor 1 ,则无需执行任何额外操作即可使用本地版本。请注意,App Inventor 2的软件包仍在进行中。可以通过设置页面获得Mac版本文档  介绍如何访问和使用App Inventor 2的最新版本的设置工具。

4.1设置GNU / Linux系统:所需软件

在开始使用App Inventor之前,请确保您的服务器包含以下软件:

  • Java:我们已经使用Oracle Java 7测试了构建。其他版本可能有用,但我们还没有对它们进行测试。我们建议使用Oracle Java而不是OpenJDK。您可以随意尝试使用OpenJDK构建App Inventor,但可能存在不兼容性。特别是,当您使用App Inventor  创建应用程序时,块编辑器可能无法在OpenJDK下工作,因为OpenJDK未提供签名jar文件“ jarsigner ” 所需的实用程序安装Java之后,通过尝试标准App Inventor“测试Java配置”测试来检查Java和Java Web Start是否都能正常工作

http://beta.appinventor.mit.edu/learn/setup/index.html如果这不起作用,您可能需要重新安装Java。在App Inventor 2中,块编辑器不再使用Java(它是在浏览器中运行的JavaScript应用程序),因此预计会出现较少的Java问题。

  • Apache ant:您可能需要安装Apache ant,或者您可能需要将已安装的版本更新为1.8.1或1.8.2(或更新版本)。检查你的版本。
  • bash:你应该运行bash apache-ant-1.8.2(或更新版本)
  • 导出JAVA_HOME = / usr / local / build 作为你的shell。为了使ant工作更方便,在GNU / Linux下,将以下内容添加到.bashrc文件中,进行必要的更改以反映您安装Java和ant的实际目录:

 

        export ANT_HOME = / usr / share / ant / adtools / java / jdk

        export PATH = $ {PATH}:$ {ANT_HOME} / bin

 

 

  • Google AppEngine Java SDK。  注意:版本1.9.28似乎存在问题,因此现在下载1.9.27。 从developers.google.com/appengine/downloads.html获取并安装最新的Java版SDK  
  • 64位兼容性:如果您使用的是64位计算机和JDK,则需要安装32位兼容性才能使用。在Ubuntu中,您可以使用以下命令执行此操作:sudo apt-get install ia32-libs
  • Python也是一个依赖项,但它在大多数Linux安装中都是默认的。

 

4.1.1关于Ubuntu 14.04.1 LTS 64位的注释

从Ubuntu 14.X开始,兼容包is32-libs  不再存在。以下软件包已作为良好组合进行测试,以便在此发行版中启动并运行App Inventor:

  • 的openjdk -7- JDK
  • 蚂蚁
  • lib32z1
  • lib32ncurses5 
  • lib32bz2-1.0
  • lib32stdc ++ 6

 

如果您喜欢,Oracle JDK 7也应该是一个选项。

4.2构建App Inventor并在本地计算机上启动它(GNU / Linux)

一旦安装了所需的软件,获取源代码,构建App Inventor以及在本地计算机上启动它以进行测试和开发的步骤与上述MacOS相同。

 

5.构建和启动App Inventor(Windows)

本节介绍如何在运行Windows操作系统的计算机上构建和运行App Inventor服务。构建App Inventor后,您可以在计算机的开发服务器上运行它以进行测试和开发,也可以将其部署到appspot.com。您还需要创建一个构建服务器。这里的步骤几乎与MacOS和GNU / Linux的步骤相同,但启动AppEngine的脚本是* .cmd文件而不是* .sh文件。

5.1设置Windows系统:所需软件

 

  • 您可能需要将Ant添加到Windows系统/用户变量
  • (对于Windows 7,我的电脑 - >属性 - >高级系统设置 - >环境变量 - >系统/用户变量)

 

  • 一个。您可能需要将git添加到Windows系统变量中
  • 湾 安装Github后,您可以从此处克隆App Inventor源代码。

 

  • 一个。MIT App Inventor当前支持的版本是1.9.27。

 

  • 一个。建议使用安装程序版本
  • 您需要安装Python并将其添加到PATH(环境变量)中。我们建议使用2.7.5版,但任何较新的版本都可以使用。
  • PhantomJS

 

5.2构建和启动App Inventor

从命令提示符运行时,可能需要确保目录中的任何字母之间没有空格。如果有,则需要更改目录,或获取没有单个空格的新帐户名(Windows 7不支持更改用户帐户名)。*见下面的注释*

 

请注意,默认目录为C:\ Program File \ xxx,并且在Program和File之间有一个空格。建议的安装路径将是C:\中的直接子文件夹。如果您遵循此路径,并且已安装现有Java JRE或JDK,则需要卸载它们然后执行安装,或将新变量路径添加到系统变量下的“Path”变量。

 

**注意**:如果使用git bash(https://msysgit.github.io/从msysgit运行命令,而不是从命令提示符运行,安装过程将与Mac OS完全相同。无需更改目录名称以避免空格或更改源代码。此外,您将能够运行* .sh文件而不是* .cmd。如上所列安装了所有适当的软件,该过程与Mac OSX安装相同。这已经过msysgit的git bash测试和验证。

 

最后,您需要通过在命令提示符中输入“set”来检查是否正确设置了所有必需的变量。如果不是,您可能需要仔细检查是否使用管理员帐户进行更改,或重新启动操作系统(在极少数情况下)。

 

建造

您可能希望通过在命令提示符下输入命令“echo%JAVA_HOME%”来仔细检查JAVA_HOME变量。当您尝试构建App Inventor时,没有正确设置将导致许多编译错误。

 

如果你确实在构建过程中看到了一些错误或失败,请回过头来仔细检查源代码并在执行下一个“ant”之前执行“ant clean”。

 

用户在编译系统时报告了几个问题。它们通常与Windows如何为Java堆分配内存相关联。环境变量可以帮助完成此过程; 一些用户报告说,创建以下变量会使错误消失:

设置_JAVA_OPTIONS = -Xmx1024M

 

在其他情况下,Ant选项似乎也有效:

设置ANT_OPTS = -Xms512m -Xmx512m

 

发射

运行App Engine时,应该调用 .cmd  文件,而不是 OSX和Linux .sh 文件。

 

您可以通过连接到appinventor文件夹并运行命令来启动本地App Inventor服务(在一行上)

 

<您的appengine SDK文件夹> /appengine-java-sdk-1.9.11/bin/dev_appserver。cmd  --port = 8888 --address = 0.0.0.0 appengine / build / war /

 

注意:自2016年4月18日起,您必须使用版本为1.9.27或更低版​​本的App Engine SDK。新版本中的dev_appserver不起作用。您还需要拥有最新版本,并将其用于部署到App Engine本身。

 

其中<您的appengine SDK文件夹> 是安装App Engine SDK的路径,并将“1.9.11”替换为您正在运行的Appengine SDK版本的编号。(定期下载最新版本的SDK是个好主意。还要确保dev_appserver.cmd文件是可执行的。)

 

您可以更改端口号以及AppEngine SDK和App Inventor目录的位置以适合您的系统配置。--address  标志是AppEngine上的功能,让其他计算机连接到服务器在Web上。

 

shell窗口将在服务器运行时打印状态信息。您可能希望将其保留为故障排除日志。为方便起见,您可能希望将服务器设置为分离运行,并使用命令行(全部在一行上)将其输出保存到日志中,如:

 

运行此命令并在系统启动时等待约30秒。(您可以按照日志中的进度进行操作。)然后浏览到localhost:8888,您应该看到App Inventor正在运行。本地网络上的人也应该能够通过浏览到<您的IP地址> :8888 来使用它

 

通过创建一些项目来测试系统。这应该是一个几乎完全正常工作的App Inventor系统..您应该能够打开Blocks编辑器,连接手机或模拟器,下载和上传文件 - 简而言之,包装应用程序以外的所有内容。您需要一个构建服务器来打包应用程序。

 

5.3在本地计算机上启动构建服务器

您需要设置构建服务器。您可以使用本地计算机作为构建服务器。您还可以将其他计算机指定为构建服务器,如下面的“   设置构建服务器”中所述要在本地计算机上启动并运行构建服务器,请打开一个新shell,连接到App Inventor目录的buildserver子目录

        cd 你的appinventor目录

        cd buildserver

 

并运行

 

ant RunLocalBuildServer

 

如果一切都成功,您应该看到结束的输出

        [java]服务器正在运行

 

在构建项目时,观察buildserver输出以查看它在打包中经历的步骤以及验证事情是否正在运行是很有用的。打包可能需要很长时间,特别是如果您使用小型机器构建服务器。

 

您可能希望创建一个shell脚本,该脚本与上面启动App Inventor的命令一起运行此命令,因此您可以启动App Inventor并使用单个命令启动构建服务器以进行测试和调试。

 

您可以通过查看日志或使用Web浏览器查看某些状态信息来验证构建服务器是否正在运行。浏览

本地主机:9990 / buildserver /瓦尔

 

将显示有关服务器及其运行的计算机的一些状态信息。另外,浏览到

本地主机:9990 / buildserver /健康

 

 如果服务器正在运行,应该响应OK 

6.设置构建服务器

上述说明显示了如何在本地计算机上部署App Inventor,该计算机既可用作App Inventor服务,也可用作构建服务器。如果您要在appspot.com上的Google App Engine上部署App Inventor服务,则需要提供自己的构建服务器。本节介绍如何设置构建服务器。以下部分将说明如何将此构建服务器与appspot.com结合使用,以部署可供Web上任何人使用的服务(您还可以设置访问限制)。

 

此处的说明适用于构建服务器计算机必须运行Linux或MacOS。  本文末尾介绍了为Windows设置构建服务器。   构建服务器计算机必须位于公共Internet上,因此可以从appspot.com访问。例如,您无法将其设置为在防火墙后面运行。

 

创建构建服务器的步骤是

  1. 为buildserver计算机创建软件
  2. 在buildserver计算机上安装软件并启动服务器,如本节所述。

第6节将介绍如何在App Engine上启动服务并将其配置为使用构建服务器。第7节将讨论您可以为构建服务器和App Inventor服务本身指定的一些配置选项。

6.1创建buildserver软件包

要创建构建服务器软件,首先按照上面第2节中的说明构建应用程序发明者。但是不要像第3节那样继续启动服务。而是打开一个新的shell,连接到App Inventor文件夹的buildserver子目录

        cd 你的appinventor目录

        cd buildserver

 

并运行

ant BuildDeploymentTar

 

这应该在appinventor文件夹中生成一个文件:

建立/ buildserver / BuildServer.tar

 

在桌面上创建一个名为for-BuildServer的 新文件夹 ,并将BuildServer.tar 复制到该新文件夹。

 

在App Inventor文件夹中查找名为misc / buildserver 的子目录在其中,应该有一个名为launch-buildserver 的文件launch-buildserver 复制for-Buildserver  文件夹。

换buildserver  文件夹现在包含软件包可以在buildserver计算机上安装。  

6.2在buildserver计算机上安装软件并启动构建服务器。

必须可以从公共互联网访问buildserver机器。上面创建for-buildserver 文件夹复制到该buildserver计算机。

 

 buildserver机器上选择一个目录来保存buildserver软件。我们将此文件夹称为buildserver文件夹将文件   Buildserver.tar  和launch-buildserver  放在buildserver文件夹中。

 

在buildserver计算机上,连接到buildserver文件夹,然后运行该命令

 

tar -xf BuildServer.tar

 

这应该生成一个名为lib 的文件夹

 

最后,在buildserver文件夹中运行

 

./launch-buildserver

 

有关您可能要为launch-buildserver指定的一些选项,请参阅下文

 

运行launch-buildserver将启动构建服务器并创建日志文件buildserver-log.out 如果您查看此日志,您应该看到以“服务器运行”结束的启动消息。稍后,在使用App Inventor服务打包应用程序时,您可以检查此日志文件以查看构建进度并帮助诊断构建错误。  

 

注意:launch-buildserver尝试将buildserver日志文件保存在目录/ home / buildserver中。如果buildserver机器上没有这样的目录,这将失败。

您可以使用其中一个buildserver选项更改此目标目录(请参阅下文)。

 

要检查构建服务器是否正在运行,请使用浏览器访问URL

 

http:// <您的buildserver机器> :9990 / buildserver / vars

 

其中<your buildserver machine> buildserver计算机的主机名(或IP地址)。如果构建服务器正在运行,您应该看到一个包含状态信息的页面。如果您没有看到这一点,请检查buildserver日志以获取可能出错的线索。

7.在Google App Engine上部署App Inventor

获得在本地计算机上运行App Inventor服务的经验后,您可以在appspot.com上部署自己的服务Google AppEngine,并将其提供给网络上的任何人。本节介绍如何从运行MacOS或GNU / Linux操作系统的计算机上部署Google App Engine上的服务。两个系统的说明相同。本文末尾讨论了在Windows上进行部署。

 

这里的说明假设,如上面第2节和第3节所述,您已经在本地系统上构建并启动了App Inventor,并且您知道如何设置构建服务器,

7.1在App Engine上部署之前需要考虑的问题

以下是有关在App Engine上部署的一些注意事项。如果您要将系统作为服务供他人使用,而不仅仅是个人实验,这些考虑因素尤为重要。

 

 7 .1.1 Java和App Engine版本

目前(2017年5月)我们推荐以下版本的Java和Google App Engine。Hal于2016年5月对这对进行了测试:

  • Java版本1.7.0_79。其他版本也可能有效。Java 8适用于构建独立系统,但部署到App Engine需要Java 7.   如果使用Java 8特定功能,则代码可能会在生产中失败。
  • AppEngine上的Java-SDK - 36年1月9日。(截至2017年5月)
  • 低于v1.9.36的版本不适用于构建本地实例,因为它们使用已弃用的云文件API。  

.1.2 App Engine托管; 获取应用程序ID

如果您没有使用本地服务器,那么您将在App Engine上将App Inventor作为Java Web服务运行与任何App Engine服务一样,您可以在Appspot.com上的Google基础架构上将App Inventor部署为托管服务。 

 

以下说明是独立的。但是,如果您要为其他人托管服务,我们强烈建议您获得App Engine和Java App Engine服务的一些经验。Google App Engine网站上有几个教程介绍如何开始使用 

 

您需要在Google App Engine上创建一个应用程序来运行App Inventor服务,并 为其注册应用程序ID 您可以从App Engine 教程中学习如何执行此操作 

 

您还需要将应用程序配置为使用Google Cloud Store(GCS)。此配置的一部分将涉及创建   GCS存储桶实例配置为云集成项目时会发生这种情况。  在您被允许创建GCS存储桶之前,Google要求您使用Google App Engine开始免费试用。免费试用持续时间有限,并提供有限的存储空间,但这应足以进行测试。即使您的预期费用为零,Google也会要求您在激活试用版之前输入信用卡号。

7.1.3用户登录和认证

您在上面创建的本地App Inventor服务没有用户身份验证。相比之下,App Engine上的服务要求用户使用Google ID登录。原则上,网络上任何拥有Google ID的人都可以使用您的服务,这可能不是您想要的。要限制访问,App Inventor允许您选择配置白名单,其中唯一可以使用该服务的人员是您在白名单中包含其ID的人员。您可以在设置配置选项时设置白名单。

7.1.4用户项目的存储

App Inventor服务将为Google App Engine数据库的各个用户项目(源代码和已编译应用程序(APK文件))维护存储。请记住,这个用户的存储项目是其一部分服务:如果清除该数据库,然后存储用户项目将消失。如果您正在试验该服务,并且还为其他人提供该服务,则应建议您的用户在其各自的计算机上维护其项目的备份副本,以防您需要重建服务并清除数据库。 

7.1.5构建服务器

与本地服务(本地App Inventor服务也可以是构建服务器)相比,您必须为App Engine上托管的App Inventor服务提供单独的构建服务器计算机。构建服务器计算机必须位于Google App Engine可以访问的公共网络上。

7.1.6 App Engine使用费

谷歌对App Engine的使用收费超过一定数额。此限制应足以供个人使用或为少数用户提供服务。但除此之外,您可能会发现自己遇到App Engine的免费使用限制。如果您正在运行供其他人使用的服务,则应尝试使用小型用户组并持续监控负载。

7.2构建和部署App Inventor和构建服务器

部署到App Engine有两个主要部分:

  1. 构建App Inventor并上传到App Engine
  2. 设置构建服务器并配置App Inventor服务以使用它

您还可以设置App Inventor服务和构建服务器的配置选项。(见下文)

7.2.1构建App Inventor并将其部署在appspot.com上

正如您在第2部分中所做的那样构建App Inventor。但是不要继续在本地计算机上运行它。  

7.2.2将您的服务部署到appspot.com

连接到本地计算机上的App Inventor目录并运行命令(全部在一行上)

 

<your-appengine-SDK-folder> /bin/appcfg.sh -A <your-application-id> --oauth2 update appinventor / appengine / build / war

 

其中<your-appengine-SDK-folder> 是安装App Engine Java SDK的路径,<your-application-id> 是您使用Google App Engine创建的应用程序ID。 

 

注意:您可能希望使用上面的命令行创建脚本,以避免将来重新键入它。

 

现在,您应该可以浏览到<your-application-id> .appspot.com并查看在那里运行的App Inventor服务。你应该能够使用它,打开块编辑器,并与手机或模拟器交互工作 - 除了包装应用程序之外的一切。

7.2.3将实例配置为云集成项目

要使用云存储,我们的实例必须配置为云集成项目。信息位于:https//cloud.google.com/appengine/docs/java/googlecloudstorageclient/activate

 

请参阅标记为“使用默认存储桶”的部分:

 

2. 如果您的应用没有默认存储桶,请创建一个:

  1. 访问App Engine 管理控制台  并选择您的应用。
  2.  在左侧导航窗格中选择Application Settings ,然后滚动到页面底部的Cloud Integration
  3. 单击“ 创建”, 然后等待创建存储桶。铲斗已完全安装好并可以使用。

请注意,这些说明是使用App Engine管理控制台执行的 - 这Google Developers Console不同

 

完成此操作后,您应该能够在Google Developers Console>存储>云存储>浏览器中看到新的默认存储桶。它看起来像这样:

 

 

即使在云集成任务完成后立即显示存储桶,您也必须等待一段时间 - 可能需要一小时 - 在新实例可以使用其存储之前。

 

**

7.2.4设置构建服务器并配置App Inventor服务以使用它

要打包应用程序,您需要一个构建服务器。如上面第5节中所述设置并启动构建服务器,并测试服务器是否正在运行并且可以从公共Internet访问。

现在连接到本地计算机上的appinventor文件夹找到该文件

 

AppEngine上/编译/战争/ WEB-INF / AppEngine上-web.xml中

 

假设您已在该计算机上构建了App Inventor。  警告: 确保编辑appengine / build / war 文件夹中的文件, 而不是appengine / war中文件的版本

 

更改读取的行

 

<property name =“build.server.host”value =“localhost:9990”/>

 

用构建服务器计算机的名称替换“localhost”,指定端口9990,例如,value =“mybuildmachine.myschool.edu:9990” 

 

注意:保持端口为9990.可以更改为其他端口,但这也需要进行一些其他更改,并更改buildserver正在侦听的端口请参阅下面有关更改构建服务器端口号的部分

 

使用与上面相同的appcfg.sh命令重新部署App Inventor服务,并测试您是否可以打包应用程序。如果出现问题,请使用浏览器检查构建服务器的/ buildserver / vars页面,以验证构建服务器是否正在运行,以及App Inventor服务是否可以通过网络访问它。如果单击 App Inventor Designer页面上的Debugging 链接,也可能有助于查看显示的信息

8. App Inventor服务的配置选项

本节介绍了可以为App Inventor服务配置的一些有用选项。

8.1设置白名单

可以将App Inventor服务器配置为使用白名单:只允许列表中的用户登录。其他人将收到一条消息,指出服务器不可用。白名单位于文件中

<your-appinventor-folder> / appengine / build / war / WEB-INF / whitelist

 

编辑此文件以列出您要允许的用户地址,每行一个地址。不要忘记包含您自己的地址。

 

现在打开白名单限制:找到文件

 

<your-appinventor-folder> /appengine/build/war/WEB-INF/appengine-web.xml

 

编辑读取的行

        <property name =“use.whitelist”value =“false”/>

 

将“false”改为“true”。  

 

如果您愿意,可以关闭白名单限制。请记住,如果您这样做,任何人都可以连接到您的服务。

8.2当天的消息

 

您可以配置App Inventor指定当天的消息(MOTD),用户将在设计器的右上角看到该消息。默认情况下,此功能处于关闭状态,我们建议您将其关闭。

 

8.2.1启用当天的消息

 

但是,如果您确实想要为您的服务显示MOTD,请找到该文件

 

<your-appinventor-folder> /appengine/build/war/WEB-INF/appengine-web.xml

 

更改读取的行

        <property name =“motd.check.interval.secs”value =“0”/>

使值成为检查的间隔是否有新的MOTD。例如,值为900将每15分钟检查一次。值为0将禁用MOTF。

 

我们建议您将检查间隔保持较长时间,或者保持MOTD禁用,因为常量检查会将负载放在App Engine服务上,这将增加实例的使用情况统计信息,并可能使您超过App Engine服务的免费限制。

 

8.2.2设置当天消息的文本

仅当您选择启用MOTD时才执行此步骤。

App Inventor服务运行后,您可以通过打开服务的管理控制台(来自appspot.com)并选择左侧的数据查看器(数据下)来指定MOTD的文本。使用“按种类”下拉列表选择MotdData并打开id = 1的项目。在“内容”部分下,您会看到“值”框。您可以编辑该框的内容以创建新的MOTD文本。您可以随时更改此MOTD。您无需重新启动服务即可使其生效。

8.3 服务条款

当人们第一次连接到您的appinventor服务时,会要求他们同意服务条款。服务条款是位于的HTML文档

<your-appinventor-folder> /docs/about/termsofservice.html

你可以根据自己的意愿编辑这些。此文件将反映在静态页面中

http:// <your-appinventor-server> /about/termsofservice.html

 

要将App Inventor配置为现在要求人们同意服务条款,您需要打开TOS弹出窗口。转到appinventor文件夹并找到该文件

<your-appinventor-folder> /appengine/war/WEB-INF/appengine-web.xml

 

编辑读取的行

 

        <property name =“require.tos”value =“true”/>        

 

将“true”改为“false”。  

 

可以编辑TOS弹出窗口的内容

<your-appinventor-folder> /appengine/war/Ya_tos_form.html

将弹出窗口(一个小盒子)更改为about / termsofservice.html

9. Build服务器的配置选项

本节介绍构建服务器的配置选项。通常,这些被指定为launchbuildserver的命令行选项。

9.1版本号匹配

每个App Inventor版本都有一个版本号(例如,“61”)。您将在浏览器的设计器屏幕右下角,块编辑器窗口的左下角以及Build Server日志的开头找到此版本。这些版本必须匹配,否则App Inventor将不会构建项目。更新到新版本时,请确保同时更新构建服务器和App Inventor服务。如果您使用的是其他人的构建服务器,则必须使用它们才能使用相同的版本。

 

您可以将App Inventor配置为不强制实施版本号匹配,这在您测试新版本时可能很有用。

 

要关闭版本号匹配,请转到appinventor文件夹并找到该文件

<your-appinventor-folder> /appengine/build/war/WEB-INF/appengine-web.xml

 

编辑读取的行

 

        <property name =“build.send.git.version”value =“true”/>

        

将“true”改为“false”。  

9.2检查构建服务器状态信息

要检查Build Server是否正在运行,请浏览到URL

http:<address:port> / buildserver / health

其中<address:port>是部署Build Server的名称和端口。如果服务器响应“OK”,则它正在运行并接受构建请求。

如果您浏览到

http:<address:port> / buildserver / vars

您将看到有关服务器状态的信息,包括内存使用情况和平均负载。还有关于构建和拒绝的作业数量以及同时构建的数量的信息,这可能在调整服务器以匹配负载时很有用(见下文)。

9.3更改构建服务器端口号

构建服务器端口默认设置为9990.如果可以,应将其设置为9990,但如果确实需要更改它,则可以按如下方式进行:

 

首先,如上面“指定构建服务器计算机”中所述:转到appinventor文件夹并找到该文件

<your-appinventor-folder> /appengine/build/war/WEB-INF/appengine-web.xml

更改读取的行

<property name =“build.server.host”value =“localhost:9990”/>

到正确的主机名和端口。  

然后通过使用命令行选项运行launchbuildserver来启动Build Server以使用此端口号

--port ñ

其中 是端口号。您应该使用浏览器检查构建服务器状态并验证它是否正在侦听正确的端口。

 

9.4指定最大同时构建数

构建项目是一项计算密集型任务。试图同时构建的几个用户可以压倒构建服务器。您的用户会注意到这一点,因为项目需要很长时间才能构建。

 

您可以配置构建服务器以限制它将同时处理的构建任务的数量。例如,如果同时构建的最大数量设置为8,并且当前有8个构建正在进行,则尝试执行其他构建将获得响应,表明服务器正忙,请求再次尝试几分钟。被拒绝的请求数包含在Build Server状态信息中。

 

根据构建服务器和使用它的用户数量,您可以调整同时构建的最大数量并尝试可行的方法。默认设置为允许无限数量的同时构建。如果要部署服务供公众使用,您可能希望更改此设置。像8个同步构建这样的东西对于功能相当强大的机器来说是一个现实的数字。

 

要更改此参数,请按照上述端口号编辑launch-buildserver脚本,然后添加选项

--maxSimultaneousBuilds 8

或者您要使用的任何数字而不是8.将数字设置为0,或省略可选参数,使最大同时构建数不受限制。

9.5限制允许的App Engine主机

通常,构建服务器将响应请求构建的任何App Inventor。您可以使用launchbuildserver的requiredHosts选项将其限制为指定主机的列表。使用选项调用启动构建器

        --requiredHosts 主机列表

将导致构建服务器仅响应列表中的主机。

 

9.6构建服务器日志的路径

您可以使用logpath选项更改Build Server将其日志写入的位置:

--logpath <日志文件的路径>

10 使用外部构建服务器在本地运行App Inventor

注意:这尚未实现。目前,如果在本地计算机上运行App Inventor,则还必须将该计算机用作构建服务器

 

11.加快开发的一些提示和技巧

请参阅本文档中的建议

AppInventor2 AppInventor2

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部