App Inventor自定义插件Extension

App Inventor 是Google推出的一个简化版的安卓开发,利用拖拽式的方式实现代码块堆叠,从而完成相应的逻辑;很容易上手,但是由于代码块提供的功能有限,使用比较单一,在开发上有很大的局限性,但是在app inventor2中google提供了Extension模块,开放了app inventor的源码,使得开发者可以根据自己的需要自定义开发组件。

目前来看,自定义组件不太方便调试,报错机制可能也不是很完善,开发上不是很方便,网上的相关教程也不是很详细,现在,想将我自己这几天的实现过程整理一下,以免这该死的健忘留下脑袋里空空如也。

首先,是安装必备工具:jdk、ant、(java IDEA、Sublime 用于编辑你自定义的组件代码) APPEngine、python2.7以上(好像是用于启动app inventor的本地服务器)在这里我没有用上,大家感兴趣可以了解一下

一、配置环境

配置jdk:为了不出问题,建议大家就安装到默认目录下,下一步到最后安装完成。

安装完JDK后配置环境变量  计算机(右键)→属性→高级系统设置→高级→环境变量

App Inventor自定义插件Extension_第1张图片

新建JAVA_HOME:如果是默认安装路径那么就在这个路径下:C:\Program Files\Java\jdk1.8.0_171

App Inventor自定义插件Extension_第2张图片

新建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的目录

App Inventor自定义插件Extension_第3张图片

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

App Inventor自定义插件Extension_第4张图片

在这个包下面创建你的组件的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中导入

然后在代码块中就可以调用你刚刚封装好的模块了

App Inventor自定义插件Extension_第5张图片

基本的流程大致就是这样的了,接下来要封装更复杂的情况,需要仿照源码来封装,感谢阅读,欢迎指正~

你可能感兴趣的:(Android)