最新消息:

App Inventor插件开发(七)小结未完待续

App Inventor 少儿编程 1872浏览 0评论

删除大段无用的废话,我昨天是在干什么。
文中所有的目录相关都是以appinventor-sourcesappinventor为根。

0.前言

话说我刚刚说这广州服不更新怎么转眼就更新了。
但是更新后发现setContentView方法失效,造成整个插件无法使用,正在思考解决方案。
不知该问题是我个人原因还是大家都有。
只要添加进去一个布局,然后直接对该布局进行添加控件即可,即绕过该方法,其他依旧可用。

1.开发环境(大牛请略过)

开发环境的配置之前已经讲过了,但是我实际使用时还是做了一些修改。

1.1开发工具

notepad++的代码提示太废了
改用Sublimt Text 3,不但颜值高而且功能强大,相见恨晚。

1.2build.xml修改

我觉得编译速度有点慢,对其进行少量修改,大家可自行尝试,不是很推荐。

1.2.1编译顺序

把depends都改成只依赖于前一个target,可以减少重复编译的时间。
从72秒变成了34.2秒。

1.2.2去除冗余(不建议)

因为我参加的比赛要求必须能在广州服上运行,所以我不能更改标准库。
因此,对原来库的编译不再必要。设置一堆只读,跳过大量target。
结果从30+秒变成了14.2秒。
虽然很快,但是不建议,不是很稳定。有这修改的时间,足够做很多事情了。

1.3第三方依赖添加

比如百度地图,和风天气等很多库都是通过jar发布的,不是web接口。
相信如果你有这种需求,应该很容易看懂我在干什么。
下面以和风天气举例。

  1. 下载jar,重命名为heweather-2.0.jar。
  2. 新建目录libheweather,将heweather-2.0.jar粘贴进入。
  3. 然后再在components/build.xml中,大概133-164和265-294行中间会有一大坨导入,添加如下
<!-- HeWeather-lib -->
<pathelement location="${lib.dir}/heweather/heweather-2.0.jar" />

随后即可根据官方文档进行开发。

1.4工作目录转移

因为经常要导入原生组件,我直接把Android SDK下sources/android-22整个拷过来了,但是编译时会把这些也全进行编译。
虽然这个问题可以通过在build.xml中添加exclude来解决。可直接在另一目录工作是个更好的办法,通过批处理将测试包都复制过去,最后进行编译。
如果你bat写的好不会浪费时间,甚至可以节省时间。就是xcopy命令复制目录时要手动输入个d,试了试前面加上echo d|差点把d盘给我删了,不敢乱试。

1.5cmd.bat

这个大家应该都知道,win下没有像Linux一样ctrl+alt+t直接在当前目录打开终端的方式,慢慢cd过去简直要死人,尤其是遇到中文目录时。
新建cmd.bat,内容7字节cmd.exe,放在需要打开的目录下,双击运行。
我顺便统计了一下,在我的D盘下一共有525个7字节的cmd.bat。。。

1.6Apktool&dev2jar&jd-gui

这三个工具的安装不用多说,都是逆向时用到的东西。
但是逆向出来的结果让我人都傻了,中文变量名都是小事,看着满篇的SimpleSymbol、ModuleMethod、LList连句正常的代码都没有。
给大家放一段看看。。。就是我的WifiTemp的逆向。

1.7常用网站

Google怎么突然能用了???能用我也看不懂,英语不好是个硬伤。。。
Android文档:https://developer.android.google.cn/
广州服:http://app.gzjkw.net
tinyweb数据库(安全性堪忧):http://tinywebdb.gzjkw.net/
图片上传(没用过):http://appimage.gzjkw.net/upload.php
例程与教程:

https://github.com/OpenSourceAIX

https://aix.colintree.cn/zh/

http://appextension.applinzi.com/article/HowToWriteAIX-0

http://appextension.applinzi.com/

UI设计(这一个应该够了):

http://chuangzaoshi.com/

其他教程:

http://www.w3school.com.cn/

http://www.runoob.com/

莫名发现有个做词典的得奖了,只是围绕接口做了点周边???
所以这里也放一点网页接口:

https://www.juhe.cn/

http://www.idataapi.cn/product/list?type=1

http://api.okayapi.com/docs.php?type=fold

2.注解的使用

类、方法、属性、回调都是通过添加注解使得其被注解解释器识别的。
注意默认是不定义该属性时该属性的默认值,而不是平常所设置的值。

2.1类

两个注解一般一起用。
可能需要将访问控制设置为public,未测试。

@DesignerComponent(version = A.VERSION,
    description = "",
    category = ComponentCategory.EXTENSION,
    nonVisible = true,
    iconName = "images/extension.png")
@SimpleObject(external = true)
public class A extends AndroidNonvisibleComponent{
	public static final int VERSION = 1;
	//...
}

常用属性
DesignerComponent

属性值 介绍 常用
category 组件类别 ComponentCategory.EXTENSION
description javadoc中的介绍
designerHelpDescription 给用户看的介绍
nonVisible 是否为不可见组件 true
iconName 图标 “images/extension.png”
version 版本 1
helpUrl 帮助网页网址

注意

  • 图标的目录在appenginesrccomgoogleappinventorimages下
  • designerHelpDescription为空则用description代替
属性值 介绍 常用
external 是否为外部组件 true

2.2方法

方法的创建更为简单,但又有一定限制。
暴露给用户的方法的参数及返回值只能是Yail Type。
Yail Type我也不知道是何方神圣,但是只能用简单类型和少数例外以及Object。
可以强制类型转换解决。

@SimpleFunction(description = "")
public void setXXX(Object buttonObject) {
	Button button = (Button)buttonObject;
	//...
}
属性值 介绍 常用
description 描述
userVisible 用户是否可见 true

2.3属性

属性本质上还是个方法,只不过使用了不同的注解。

private float xxx = 12.3;
@DesignerProperty(editorType = PropertyTypeConstants.PROPERTY_TYPE_FLOAT,
  defaultValue = 0.5f + "")
@SimpleProperty(category = PropertyCategory.APPEARANCE)
public void XXX(float x) {
    xxx = x;
}

3.代码开光术

//
//                            _ooOoo_
//                           o8888888o
//                           88" . "88
//                           (| -_- |)
//                            O = /O
//                        ____/`---'____
//                        . ' \| |// ` .
//                       / \||| 1 |||// 
//                     / _||||| -9- |||||- 
//                       | | \ 9 /// | |
//                     | _| ''-8-/'' | |
//                       .-__ `0` ___/-. /
//                   ___`. .' /--2-- `. . __
//                ."" '< `.____<0>_/___.' >'"".
//               | | : `- `.;` 2 /`;.`/ - ` : | |
//                   `-. _ __ /__ _/ .-` / /
//         ======`-.____`-.________/___.-`____.-'======
//                            `=---='
//
//         .............................................
//                  佛祖保佑                  永无BUG
//          佛曰:
//                  写字楼里写字间,写字间里程序员;
//                  程序人员写程序,又拿程序换酒钱。
//                  酒醒只在网上坐,酒醉还来网下眠;
//                  酒醉酒醒日复日,网上网下年复年。
//                  但愿老死电脑间,不愿鞠躬老板前;
//                  奔驰宝马贵者趣,公交自行程序员。
//                  别人笑我忒疯癫,我笑自己命太贱;
//                  不见满街漂亮妹,哪个归得程序员?
//                  

未完待续。。。

您必须 登录 才能发表评论!