AI開發實戰1-App Inventor的編譯
1 App Inventor的編譯
編譯AppInventor需要使用ant,在專案的GitHub上https://github.com/mit-cml/appinventor-sources有如下說明:
Youwill need a full Java JDK (6 or 7, preferably from Oracle; JRE is not enough)and Python to compile and run the servers.
需要在電腦上安裝JDK6或7,才能正常編譯。
但ant的不同版本需要的JDK不同,像1.10.1版本就需要JDK8,否則編譯的時候,會報如下錯誤:
Exception in thread "main"java.lang.UnsupportedClassVersionError: org/apache/tools/ant/launch/Launcher :Unsupported major.minor version 52.0
編譯的時候,直接輸入ant命令,會編譯所有原始碼,花費時間較長,在本人電腦上是6分鐘多。實際往往不需要編譯全部程式碼,只編譯改動的模組就可以了。
在原始碼的appinventor資料夾下有個build.xml檔案,在其中有許多target標籤:
<target name="all">
<ant inheritAll="false" useNativeBasedir="true"dir="appengine"/>
<ant inheritAll="false" useNativeBasedir="true"dir="blocklyeditor"/>
<ant inheritAll="false" useNativeBasedir="true"dir="common"/>
<ant inheritAll="false" useNativeBasedir="true"dir="buildserver"/>
<ant inheritAll="false" useNativeBasedir="true"dir="components"/>
<ant inheritAll="false" useNativeBasedir="true"dir="buildserver" target="PlayApp"/>
</target>
…
<target name="MakeAuthKey">
…
<target name="comps">
…
<target name="extensions">
…
<target name="clean">
<ant inheritAll="false" useNativeBasedir="true"dir="appengine" target="clean"/>
<ant inheritAll="false"useNativeBasedir="true" dir="blocklyeditor"target="clean"/>
<ant inheritAll="false" useNativeBasedir="true"dir="aimerger" target="clean"/>
<ant inheritAll="false" useNativeBasedir="true"dir="buildserver" target="clean"/>
<ant inheritAll="false" useNativeBasedir="true"dir="common" target="clean"/>
<ant inheritAll="false" useNativeBasedir="true"dir="components" target="clean"/>
<delete dir="build"/>
<delete dir="reports"/>
</target>
每個target標籤中間說明了使用ant + target name時,編譯的模組,如輸入如下命令:
ant all——編譯所有模組,等同於只輸入ant
antextensions——編譯外掛
antMakeAuthKey——編譯AuthKey
還有個特殊的編譯命令:
antclean——刪除之前編譯生成的build和reports資料夾。
相關文章
- 【轉載】App Inventor 開發BLE應用APP
- 《Node.js 開發實戰》翻譯歷程Node.js
- MIT App Inventor安卓圖形化開發入門MITAPP安卓
- ZOMI的AI編譯原理1AI編譯原理
- ZOMI的AI編譯原理2AI編譯原理
- AI 大模型應用開發實戰(04)-AI生態產業拆解AI大模型產業
- python開發編譯器Python編譯
- 前端開發模式:被動編譯和主動編譯前端模式編譯
- Android開發實踐:編譯VLC-for-androidAndroid編譯
- 微信小程式“反編譯”實戰(一):解包微信小程式編譯
- CentOS 8上安裝GCC實現開發編譯功能CentOSGC編譯
- iOS專案開發實戰——CoreLocation地理編碼和反地理編碼iOS
- hybrid混合編譯開發 更新編譯
- druid開發-druid編譯UI編譯
- Flutter 混合開發實戰問題記錄(四)編譯執行時問題的一些總結Flutter編譯
- [譯] 前端開發框架的實戰對比(2018 年更新)前端框架
- iPhone開發實戰iPhone
- postcss開發實戰CSS
- ChatGPT開發實戰ChatGPT
- mxml開發實戰XML
- Flutter完整開發實戰詳解(二、快速開發實戰篇)Flutter
- 手機開發實戰47——手機編輯器介紹
- 敏捷開發的實戰經驗敏捷
- 回到最初:開發不需要“編譯” 的 WebApp編譯WebAPP
- Python開發實戰Python
- AI+翻譯 AI智慧體平臺釦子coze開發搭建AI智慧體
- 開源編譯工具和編譯軟體編譯
- 《Python高效開發實戰》實戰演練——開發Django站點1PythonDjango
- 微信小程式“反編譯”實戰(二):原始碼還原微信小程式編譯原始碼
- GDB 除錯 Mysql 實戰(一)原始碼編譯安裝除錯MySql原始碼編譯
- Chrome 擴充套件的開發實戰Chrome套件
- 簡單實現Android NDK編譯jni呼叫動態庫開發Android編譯
- iOS開發你不知道的事-編譯&連結iOS編譯
- Java中的編譯器外掛開發與應用Java編譯
- 編譯原理實戰入門:用 JavaScript 寫一個簡單的四則運算編譯器(修訂版)編譯原理JavaScript
- Serverless 架構下的 AI 應用開發:入門、實戰與效能最佳化Server架構AI
- flask 專案開發實戰Flask
- 實戰Flash遊戲開發遊戲開發