App Inventor插件开发(二)编译第一个AIX插件

0.前言

一坑未平,一坑又起。。。
这dalao是真的能挖坑啊。。。
闲话少叙,进入正题
注意要Java8,Class超过52的不行,亲测。

1.编译第一个AIX插件

这里面最大的问题是dalao的模板丢了,各大论坛也找不到,只能自己找了。
dalao的GitHub上找到了网页的存档,可是也并没有什么东西,只能靠自己摸索了。
dalao的一个项目上找到了端倪,一个向量加法VectorArithmetic的是MIT官方例程,又选了一个dalao早期的一个第一次运行ColinTreeFirstRun,两个对比,尝试复原dalao的源文件。
希望看到的能够给我评论支持一下,让我看到我的博客能够给大家带来帮助,不然的话我就自己直接开工了,写博客还降低我的效率。(小小的要求,只求大家的鼓励)

1.1创建Java文件

\components\src\下创建你的Java文件,注意你的包名与文件夹的对应关系。
比如我的包名为cn.roger.temp,那么我就在components\src\cn\roger\temp下创建我的Java文件MyExtension.java

1.2复原dalao的源码

经过多方比对,最终确认了以下代码MyExtension.java,亲测可用。当然,经过了少许改动,没必要完整的复制。

package cn.roger.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 = MyExtension.VERSION,
    description = "by Roger Young",
    category = ComponentCategory.EXTENSION,
    nonVisible = true,
    iconName = "images/extension.png")

@SimpleObject(external = true)

public class MyExtension extends AndroidNonvisibleComponent {
    public static final int VERSION = 1;
    private static final String LOG_TAG = "MyExtension";

    public MyExtension(ComponentContainer container) {
        super(container.$form());
    }

    @SimpleFunction(description = "add up a and b")
    public String addab(int a,int b) {
        return ""+(a+b);
    }
}

原谅我的渣英文。。。这个应该很简单易懂了,就是计算a+b的和然后转换成字符串
但要注意,不能内含中文。这又牵扯到编码问题了。
因为整个项目是utf-8的,但网页appinventor上没写,只能用开发者工具,在窗口console标签下,键入 “document.charset”,发现是windows-1252,又出毛病了。
所以,如果你输了中文,如果是utf8,会成功编译,在网页上显示黑框问号;如果是gbk,编译都过不去。
如果你把整个项目的编译改成gbk,其他文件又会挂。所以不知道该怎么解决,希望能有朋友来帮帮我。

1.3对源码的解析

如果你不想看,可以跳到下一节。

package cn.roger.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 = MyExtension.VERSION,
//version表示插件的版本
    description = "by Roger Young",
//description表示插件的描述,也就是点击插件旁边的问号会出现的介绍
    category = ComponentCategory.EXTENSION,
    nonVisible = true,
    iconName = "images/extension.png"
//iconName表示插件的图标,位置\appengine\src\com\google\appinventor\images
)

@SimpleObject(external = true)

public class MyExtension extends AndroidNonvisibleComponent {
    public static final int VERSION = 1;
    private static final String LOG_TAG = "MyExtension";

    public MyExtension(ComponentContainer container) {
        super(container.$form());
    }

    @SimpleFunction(description = "add up a and b")
//description表示函数的描述,也就是悬停在函数上会出现的介绍
    public String addab(int a,int b) {
        return ""+(a+b);
    }
}

1.4检验

编译完成后,在网页端Extension处点击,导入,再拖入面板。
然后设置界面
这里写图片描述
贴上代码
这里写图片描述
运行一下
这里写图片描述
十分完美!!
完结撒花!!

猜你喜欢

转载自blog.csdn.net/aiw_prton/article/details/81437840