怎样开发ipk程序?我也在研究,转载本论坛的一个帖子,那个热度不高。。。。 今天在网上看见Limo GTK开发软件程序就下载下来了,上传在这上边。借此希望可以给高手们开发软件一个参考!有用的话就加点魅力吧! Limo GTK开发第一步:搭建交叉编译环境 关于Limo的开发环境,limo开发达人euzen和eric都曾做过介绍,这里再次拿出来写,主要是为了自己万一系统挂了重新来,不用到处翻资料,呵呵 进行Limo开发可以用到的工具常见的有两种:纯linux环境下的scratchbox以及可适用于linux和xp环境的codeblock scratchbox的搭建相当复杂,euzen曾对此有介绍:i8320交叉编译环境搭建,可惜本人非专业人士,尝试了几次都失败了 只好转投eric的codeblock,这里是eric的文章:mswindows下的limo开发环境 eric只说明了xp下搭建的方法,其实linux下的搭建方法也是大同小异,只不过是需要下载的东西不一样而已 以下内容部分一用eric的文章: 1.准备工作: a.下载编译器arm-2007q3-51:http://www.codesourcery.com/sgpp/lite/arm/portal/release313 linux下请下载IA32GNU/Linux Installer或者IA32 GNU/Linux Tar xp下请下载IA32 WindowsInstaller或者IA32 Windows Tar b.下载IDE codeblock:http://www.codeblocks.org/downloads 根据自己的系统选择下载 c.下载SDK:limo没有给我们准备sdk,只好自己收集了,幸好有euzen 第一部分, 头文件: 下载: euzen给大家准备好的 http://hi.baidu.com/euzen/blog/item/0cd732d0891b443a970a16bb.html 或者:http://opensource.samsung.com/ 找GT-I8320_OpenSource_Update3.zip 提取\browser-engine\include\os内的文件 第二部分:库文件: 从rom解压出factoryfs.cramfs,再从factoryfs.cramfs中提出lib目录。 注意:从rom中解压出的lib有部分是链接文件,不是真正的so库文件。需要用cp -b命令,会自动复制转换成真正的so文件。 2. 配置 (1) 将arm-2007q3-51安装到 xxx\i8320\dev\arm-2007q3 (2) 将include头文件,放到 xxx\i8320\sdk\include (可以放到别的地方,后面的步骤做相应的修改) (3) 将lib库文件,放到 xxx\i8320\sdk\lib (可以放到别的地方,后面的步骤做相应的修改) (4) codeblocks配置: 菜单”Settings”->”Compilerand debugger…”. 弹出“Globalcompiler settings”对话框-> ”selected compiler” 选择GUN ARM GCCCompiler 然后 a. 选中下面”Toolchain executables”页,修改此页所有项目(新手没法上图) Compiler's installation directory:xxx\i8320\dev\arm-2007q3 C compiler:arm-none-linux-gnueabi-gcc.exe(linux下没后缀) C++ compiler:arm-none-linux-gnueabi-g++.exe Linker for dynamic libs:arm-none-linux-gnueabi-g++.exe Linker for static libs:arm-none-linux-gnueabi-ar.exe Debugger:arm-none-linux-gnueabi-gdb.exe Resurce compiler:NA Make program:cs-make.exe b.选择“Search directories”页,修改如下 Compiler: F:\down\i8320\dev\arm-2007q3 F:\down\i8320\dev\arm-2007q3\include F:\down\i8320\dev\arm-2007q3\lib\gcc\arm-none-linux-gnueabi\4.2.1\include F:\down\i8320\dev\arm-2007q3\arm-none-linux-gnueabi\include F:\down\i8320\sdk\include F:\down\i8320\sdk\include\atk-1.0 F:\down\i8320\sdk\include\cairo F:\down\i8320\sdk\include\glib-2.0 F:\down\i8320\sdk\include\gtk-2.0 F:\down\i8320\sdk\include\pango-1.0 F:\down\i8320\sdk\include\X11 必须的好像就这几个,未来开发中还要视情况添加 Linker: D:\i8320\Develop\sdk\lib D:\i8320\Develop\dev\arm-2007q3\lib D:\i8320\Develop\dev\arm-2007q3\arm-none-linux-gnueabi\lib D:\i8320\Develop\dev\arm-2007q3\arm-none-linux-gnueabi\libc D:\i8320\Develop\dev\arm-2007q3\arm-none-linux-gnueabi\libc\lib D:\i8320\Develop\dev\arm-2007q3\arm-none-linux-gnueabi\libc\usr\lib D:\i8320\Develop\dev\arm-2007q3\lib\gcc\arm-none-linux-gnueabi\4.2.1 D:\i8320\Develop\sdk\SDL-1.2.14\src D:\i8320\Develop\sdk\SDL-1.2.14\src\stdlib D:\i8320\Develop\sdk\lib\gconf\2 c.选择”Linker settings” 左边窗口点add,输入libgtk-x11-2.0 后边窗口直接输入-Wl,-rpath=F:\down\i8320\sdk\lib\ (很多人不知道这里怎么选择,我当初也是研究了半天呢,才发现不是选择,是直接输入) 到此为止,编译环境就算搭建完成了,可以helloworld了 编译吗,makefile太麻烦,直接点Build Limo GTK开发第二步:New project CodeBlock->File->New->Project...->Emptyproject->Go Project Title输入项目名称->Next Compiler选GNU ARM GCC Compiler,下面Debugger的勾可以去掉,因为在电脑上没法debugger所以没用-Finish 点击new file->empty file 然后就可以开始了,helloworld不好玩,试试Limo的范例吧: view plaincopy toclipboardprint? #define BLACK_THEME//这句必须加上,不然编译不过去 #include<gtk/gtk.h> /*callback function to show a widget*/ void show_widget(GtkWidget *widget, GtkWidget *button, gpointer data) { gtk_widget_show(GTK_WIDGET(data)); } /*callback function to hide a widget*/ void hide_widget(GtkWidget *widget, GtkWidget *button, gpointer data) { gtk_widget_hide(GTK_WIDGET(data)); } /*callback function to Quit the application*/ void kill_app(GtkWidget *widget, GtkWidget *button, gpointer data) { /* Quits the application */ gtk_main_quit();; } /* Program start point */ int main(int argc, char *argv[]) { GtkWidget *mainwindow; GtkWidget *form; GtkWidget *label; /* This is called in all GTK applications. Arguments are parsed * From the command line and are returned to the application. */ gtk_init(&argc, &argv); /* create a main window */ mainwindow = gtk_main_window_new(GTK_WIN_STYLE_DEFAULT); /*Create a form for the main window*/ form = gtk_form_new(TRUE); /*Set title for the form */ gtk_form_set_title(GTK_FORM(form), "Hello world!"); /*Adding for to the main window form list*/ gtk_main_window_add_form(GTK_MAIN_WINDOW(mainwindow), GTK_FORM(form)); /*Setting the form as the current visible form*/ gtk_main_window_set_current_form(GTK_MAIN_WINDOW(mainwindow),GTK_FORM(form)); /*Create a new label and add it to the form*/ label = gtk_label_new("Hello World"); gtk_container_add(GTK_CONTAINER(form), label); /*Add softkeys with callbacks*/ gtk_form_add_softkey(GTK_FORM(form), (gchar *)"Show label", NULL, (SoftkeyActionType)SOFTKEY_CALLBACK, show_widget, label); gtk_form_add_softkey(GTK_FORM(form), (gchar *)"Hide Label", NULL, (SoftkeyActionType)SOFTKEY_CALLBACK, hide_widget, label); gtk_form_add_softkey(GTK_FORM(form), (gchar *)"Back", NULL, (SoftkeyActionType)SOFTKEY_CALLBACK, kill_app, NULL); /* The final step is to display main window and its contents.*/ gtk_widget_show_all(mainwindow); gtk_main(); return 0; } Limo GTK开发第三步:打包并安装你的程序每次都要用telnet命令行运行是不是有点不爽,那就打包成ipk,在手机中安装使用吧: 一、打包 先来看看ipk的结构(参考euzen博文:http://hi.baidu.com/euzen/blog/item/0666b4dea38742d78c102942.html) 包目录test下包含两个目录 1.目录DEBIAN 内含文件control,内容如下,括号内为备注,不要写到文件中去: Source: test (显示在桌面的名称) Section: Utility Package: cn.iEnzo.test (包名,既安装路径) Priority: optional Version: 0.1 (版本) Architecture: all Maintainer: iEnzo (维护者) Description: test for i8320 (描述,任写) Model: app-model-executable AppExecFile: test (执行文件名称) Vendor: iEnzo (作者) Icon: icon.png (桌面图标,由图标路径决定) 2.目录RES 内含 1)目录bin,内含执行文件,必须跟control文件中的AppExecFile保持一致,这个例子中就是test 2)图标文件,必须跟control文件中的Icon保持一致,这个例子中就是icon.png 当然图片比较多也可以建一个目录保存,比如bitmap,那么control中就要改成Icon:bitmap/icon.png 接下来,如果是在linux环境,则返回test目录上一级 命令行执行 dipkg -b test test.ipk 即可打包一个ipk 如果不想用linux怎么办 在xp环境下可以下载linux的仿真环境cygwin,安装时候记得安装archive相关包(cygwin好像没有dipkg包) 在cygwin命令行中进入test目录,然后 chmod 755 DEBIAN -R cd DEBIAN tar zcf ../control.tar.gz ./* cd .. chmod 777 RES -R tar zcf ./data.tar.gz ./RES ar r test.ipk control.tar.gz data.tar.gz 这样test.ipk就打包好了,也可以把上面的命令做成一个脚本,这样更方便 二、安装 1.首先解除权限的限制 手机上打开拨号界面,输入*#35767#,在随后出现的菜单里有三个选项: Not allowed Allowed in white list Allowed 选择Allowed 2.把test.ipk拷贝到手机中,点击开始安装,然后就可以在桌面看到这个test啦 |