详尽分享魔豆应用开发傻瓜书——helloworld

简介: 详尽分享魔豆应用开发傻瓜书——helloworld

一、准备

对于使用Windows的朋友,请注意,你们的编译器?定要将Dos换?符设置变更为Unix换行符,否则在路由器里就会看到每行的最后有一个^M,对于部分命令的正确执?是有问题的。

二、建立项目

每一个魔豆路由器的应用都必须包含两个文件:init 和manifest.json 。init 文件是所有调用的接文件,manifest.json 则是一个说明文件。 我们先建立一个目录app-helloworld ,并且在目录中建立两个空的文件,文件名即是init 和manifest.json 。如下图所示:

这样我们就建立了一个空的app-helloworld 的项目。接下来我们编写manifest.json的内容。

三、MANIFEST.JSON

我们先来编写最简单的manifest.json ?件:

{

"package_id" : "com.modou.helloworld",

"name" : "app-helloworld",

"display_name" : " 魔?你好",

"author" : "?黄",

"author_forum_id" : "4",

"author_mail" : "hd@mochui.net",

"homepage" : "modouwifi.cn",

"version" : "0.0.1",

"os_version" : "1.3.01",

"release_date" : "2015.03.28",

"location" : "internal",

"description" : " 这是?黄的hello world ?例",

"instruction" : " 这是第?个版本",

"autostart" : false,

"start_on_boot" : false

}//代码效果参考:http://www.ezhiqi.com/zx/art_6102.html

大多数的json 条?基本都可以一眼看明白。我讲几个要注意的:

package_id:这?的com.modou.helloworld要全局唯一,升级时就使用这个id 来知道替换之前已经安装的应用。如果提交到魔豆官方市场时,也会对package_id进行唯一性的检查。

? name:我们最后会将应用打包成为mpk 文件,mpk 文件的文件名与这个name必须一样。

? version:支持三级小数点,数字越大版本越高,升级就靠它了。

? os_version :这个应用运行所需要的ModouROM版本号,一般都是当前最新的稳定版。

? icon :指定一个图像文件好显示在触摸屏的启动界面里。

? autostart :安装完后是否启动。

? start_on_boot :是否在魔豆路由器启动时也启动这个应用。

在魔豆官方app-framework 文档(

里,有很详细的manifest.json 文件的说明,可以自己去看更详细的说明。

四、INIT一下

init 这个文件是每一个魔豆应用的核心。它必须是一个可执行文件,可以是一个shell脚本,当然也可以是一个二进制可执行文件、Python、Lua 文件。按约定,这个init 需要?持以下参数的运行:

? start : 启动,实现启动本应用的操作

? stop : 停止, 停止本应用的操作

? status : 查询状态,查询本应用的状态

? set_config : 对本应用重新进行配置,生效配置数据应该进?的操作

? install : 安装,本应用安装后的一次性操作

? uninstall : 卸载,本应用被卸载前的一次性操作

我们将install 和uninstall 方法实现,其它的先不管。实现这两个方法的主要目的就是在系统 安装mpk 文件时将应用程序的图标加到到屏幕启动界面中去。为了简单,通常我们都使?shell来书写init ,我们先定义?些常?的变量:

#!/bin/sh

PWD="(cd(dirname $0) pwd)"

TITLE=" 魔?你好"

PROGRAM_NAME="app-helloworld"

ICON="res/icon.png"

PRESSED_ICON="res/icon_p.png"

APPS_CONFIG_DIR="/data/conf"

LAUNCHER_CONFIG_DIR="$APPS_CONFIG_DIR/launcher/conf.d"

LAUNCHER_CONFIG_FILE="LAUNCHERCONFIGDIR/PROGRAM_NAME.conf"

INSTALL_BIN="/usr/bin/install"

REMOVE="/bin/rm -f"

这?我对部分变量的定义做下说明:

? PWD:这是得到init 这个脚本当前运行目录的变量,因为魔豆中的每一个app 在安装后都是一个随机数的变量名,所以需要用这样的方法来得到当前的目录。

? TITLE :这是显示于屏幕上的应用的名称

? ICON 和 PRESSED_ICON :在屏幕上显示和点按下去时显示图标图片,必须是PNG格式,大小为111x111。接着我们在init 中加入一个usage方法,当无聊的人不知道怎么用时我们好给他们一个提示,这是书写一个友好代码的开始:

usage() {

echo "ERROR: action missing"

echo "syntax: $0 "

}//代码效果参考:http://www.ezhiqi.com/zx/art_1510.html

接下来我们加入当应用被系统安装和删除时的调用方法:

install() {

echo "{" > "$PROGRAM_NAME.conf"

echo "\"name\" : \"TITLE\","]"PROGRAM_NAME.conf"

echo "\"icon\" : \"PWD/ICON\"," ] "$PROGRAM_NAME.conf"

echo "\"iconPressed\" : \"PWD/PRESSED_ICON\"," ] "$PROGRAM_NAME.conf"

echo "\"exec\" : \"PWD/initrun\","]"PROGRAM_NAME.conf"

echo "\"msgNum\" : 4" ] "$PROGRAM_NAME.conf"

echo "}//代码效果参考:http://www.ezhiqi.com/bx/art_2529.html " ] "$PROGRAM_NAME.conf"

INSTALLBINdLAUNCHER_CONFIG_DIR

INSTALLBIN"PROGRAM_NAME.conf" "$LAUNCHER_CONFIG_FILE"

}

uninstall(){

REMOVE"LAUNCHER_CONFIG_FILE"

}

uninstall 方法就通常容易懂,删除对应的配置文件就好。 而 install 方法实质上就是先生成一个conf 文件,这个文件的文件名是 $PROGRAM_NAME.conf (app-helloworld.conf )。然后再将它安装到系统的/data/conf/launcher/conf.d目录中去。 这是在我的魔豆中生成的配置?件的内容:

{

"name" : " 魔?你好",

"icon" : "/data/apps/17229257/res/icon.png",

"iconPressed" : "/data/apps/17229257/res/icon_p.png",

"exec" : "/data/apps/17229257/init run",

"msgNum" : 4

}

我们可以看到,在exec 中指定了当这个图标被按下时执行的命令,它调用了init run 。所以我们也需要为我们的应当加上run 方法:

run(){

textview2 -t "hello" -m "hello world"

}

在run 方法中我们使用了魔?提供的一个控件textview2,它会在屏幕上显示出一个窗?,窗?的标题是hello,中间的内容是hello world ,你按左上角的<,就可以退出了。

方法都写好了,我们还需要为init 这个shell脚本写一个case ,读取init 的参数后去调用相应的方法:

case "$1" in

"start" )

start;;

"stop" )

stop;;

"run" )

run;;

"restart" )

start

stop;;

"install" )

install;;

"uninstall" )

uninstall;;

"set_config" )

set_config;;

)

usage ;;

esac

这样?个基本的init 就准备好了。最后千万别忘记了,要给initl 加上招待权限:

chmod +x init

五、打包测试

写好了manifest.json 和init 后我们把相关资源文件加入后就可以打包mpk 上传到魔豆上玩玩了。刚才写init 时,我们设置了res?录中的icon.png 和icon_p.png为显示和按下去的图

标,建立相应的目录,将我们的png 文件放进去。这里要注意,这两个png 文件大小为111x111像素,暂不支持别的图片格式。

接下来我们打包出一个应用来,命令很简单:

tar czvf ../app-helloworld.0.0.1.mpk

这样就在上一级目录中生成了一个app-helloworld.0.0.1.mpk的文件。接下来,进入魔豆的极客模式,上传这个mpk 文件,就可以看到在已安装应用中多出了一个app 叫“魔豆你好”:

接着点触摸屏右侧的向下箭头,也可以找到魔豆你好这个图标了:

我们来点击下这个图标来启动这个应用:

看来一切正常。这就是一个最为简单的Hello World应用。本章节的所有源代码都可以从gitcafe 获取,地址为:

目录
打赏
0
1
1
1
52
分享
相关文章
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
176 5
搭建Java开发天堂:构建理想的开发环境
搭建Java开发天堂:构建理想的开发环境
108 1
搭建Java开发天堂:构建理想的开发环境
揭秘5.3k⭐开发者的秘密武器:it-tools在线工具集,你不可不知!
揭秘5.3k⭐开发者的秘密武器:it-tools在线工具集,你不可不知!
81 0
从零开始写项目第四篇【搭建Linux环境】(二)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
209 0
从零开始写项目第四篇【搭建Linux环境】(二)
从零开始写项目第四篇【搭建Linux环境】(三)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
482 0
从零开始写项目第四篇【搭建Linux环境】(三)
从零开始写项目第四篇【搭建Linux环境】(一)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
647 0
从零开始写项目第四篇【搭建Linux环境】(一)
RobotFramework实战篇-PC端web自动化demo及持续集成
Robotframework该框架的学习成本比较低,很多功能都是现成的,而且脚本易于维护,而且同时支持web端,移动端以及接口自动化,用例套件管理以及用例执行和报告查看,日志记录等功能都比较完善,而且可扩展性强。
RobotFramework实战篇-PC端web自动化demo及持续集成
Unity3D插件-自制小插件、简化代码便于使用(新手至高手进阶必经之路)
Unity3D插件-简化代码、封装功能 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
1256 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等