App Inventor 是Google推出的一個簡化版的安卓開發,利用拖拽式的方式實現代碼塊堆疊,從而完成相應的邏輯;很容易上手,但是由於代碼塊提供的功能有限,使用比較單一,在開發上有很大的侷限性,但是在app inventor2中google提供了Extension模塊,開放了app inventor的源碼,使得開發者可以根據自己的需要自定義開發組件。
目前來看,自定義組件不太方便調試,報錯機制可能也不是很完善,開發上不是很方便,網上的相關教程也不是很詳細,現在,想將我自己這幾天的實現過程整理一下,以免這該死的健忘留下腦袋裏空空如也。
首先,是安裝必備工具:jdk、ant、(java IDEA、Sublime 用於編輯你自定義的組件代碼) APPEngine、python2.7以上(好像是用於啓動app inventor的本地服務器)在這裏我沒有用上,大家感興趣可以瞭解一下
一、配置環境
配置jdk:爲了不出問題,建議大家就安裝到默認目錄下,下一步到最後安裝完成。
安裝完JDK後配置環境變量 計算機(右鍵)→屬性→高級系統設置→高級→環境變量
新建JAVA_HOME:如果是默認安裝路徑那麼就在這個路徑下:C:\Program Files\Java\jdk1.8.0_171
新建Classpath: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
在Path後面新增:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;注意:如果之前的path末尾沒有;要手動加上
配置完成後點擊確定;cmd打開命令行,java -version ,顯示java jdk的版本,配置成功
配置ant:ant用來將你的寫完的自定義的Extension打包成aix文件,打包完成以後可以直接導入到app inventor中使用
ANT_HOME 存放你ant的目錄
path ; %ANT_HOME%\bin;
classpath ;%ANT_HOME%\lib;
驗證:cmd 命令行輸入ant命令
出現以上結果證明配置成功
二、自定義組件
編輯器選擇Sublime或者Java IDEA都可以,但是都不能直接運行,必須要打包成aix在app inventor中測試,這個比較雞肋
下載appinventor 源碼:可以通過git下載:git clone https://github.com/mit-cml/appinventor-sources.git,但是我下載下來的概率很低,可以通過此鏈接下載:https://download.csdn.net/download/upuprita/11473197
如果實在沒有積分也可以私信我(* ̄︶ ̄)
下載完成後解壓你的安裝包,找到E:\appinventor-sources-master\appinventor\components\src這個路徑,在此路徑下你就可以創建你自己的組件了,創建一個新的java,作爲你的組件;例如NewEx.java(這個類名字也是你將來組件的名字)
這裏我用的是IDEA,雖然有冒紅,看着彆扭,但是總歸比Sublime好用一些,最起碼可以看到各種類和變量的引用,查找起來更順手一些
在components的src目錄下創建一個包:cn.temp
在這個包下面創建你的組件的java類
package cn.temp;
import com.google.appinventor.components.annotations.*;
import com.google.appinventor.components.common.ComponentCategory;
import com.google.appinventor.components.runtime.*;
import com.google.appinventor.components.runtime.util.*;
import com.google.appinventor.components.runtime.errors.YailRuntimeError;
@DesignerComponent(version = NewEx.VERSION,
description = "this is a test for extension",
category = ComponentCategory.EXTENSION,//展示在appinventor的哪個模塊下;Extension是最後一個模塊
nonVisible = true,//不可見
iconName = "images/extension.png")//這個組件的圖標
@SimpleObject(external = true)
public class NewEx extends AndroidNonvisibleComponent {
public static final int VERSION = 1;
private static final String LOG_TAG = "NewEx";
public NewEx(ComponentContainer container) {
super(container.$form());
}
//計算a+b的和然後轉換成字符串
@SimpleFunction(description = "add ")//簡單方法
public String addab(int a,int b) {
return ""+(a+b);
}
}
然後,對編輯好的進行打包,進入到此路徑下:E:\appinventor-sources-master\appinventor;就是你源碼下appinventor路徑下,打開命令行,輸入ant extensions 命令,第一次打包可能比較慢,大家耐心等待一下
成功後會看到一個aix的路徑,其中aix的名字就是包名,找到aix所在的位置,在appinventor中導入
然後在代碼塊中就可以調用你剛剛封裝好的模塊了
基本的流程大致就是這樣的了,接下來要封裝更復雜的情況,需要仿照源碼來封裝,感謝閱讀,歡迎指正~