Category: 手机开发

Debian安裝在Nokia N900上

By ganquan, 2010年02月12日 03:18

凌晨3點多發帖,只因實在太激動:Debian已經運行在N900上了。

其實Maemo幾乎就是把Debian移植到了mobile環境,所以我一直覺得把現有的桌面應用程序移植到N900(雖然工作量不小)應該可以解決N900應用太少的問題。現在有牛逼人物把Debian直接裝到了N900上,而且是Debian在Maemo中運行,實現了Maemo和Debian的無縫切換。這樣就意味着一切桌面程序都可以在N900上運行,我們可以看到啟動LXDE環境很快,運行leafpad非常快,啟動gimp這樣的大型程序只需10秒左右。作者說事實上完全不需要運行整個DE,用戶可以直接運行任意GUI程序。

額滴神吶,這樣一來N900的應用數量瞬間增加了好幾萬個,雖然都是傳統桌面應用,和那些非常有創意的手機app相比顯得比較“老土”,但是就應用程序的數量一點來說,對Android和IPhone都是一件非常恐怖的事情。

我非常看好Nokia,看好N900。我不希望Nokia如同Google那般瘋狂的推廣Android一樣地推廣Maemo,我倒是願意看到Nokia能低調的把Maemo基礎打好,等到成熟之後再高調推廣,一展光彩。諾基亞作為傳統的硬件廠商,在智能手機和網絡應用的結合方面肯定不是Android的對手,但是我們沒有理由對Nokia失去期待。

演示視頻:http://www.youtube.com/watch?v=U6zNfBczub8

Maemo 5模拟器安装记录

By ganquan, 2009年12月7日 17:52

原创文章,转载请注明出处,谢谢。http://ganquan.org
本文链接http://ganquan.org/blog/2009/12/maemo-dev/

看着诺基亚N900哈喇子流了一键盘,继续发挥穷鬼爱折腾的优良作风,用模拟器体验一下Maemo 5。

一、Maemo是什么?Maemo的特点。

Maemo是诺基亚推出的基于Linux的下一代智能手机操作系统。Maemo并不是刚出炉的新东西,几年前诺基亚就一直在搞了,现在的最新版系统是Maemo 5,诺基亚前段时间刚发布的N900使用的就是Maemo 5系统。根据最新消息,诺基亚将会逐步让塞班淡出智能机,将来的N系列应该都是采用Maemo系统。在未来的主流智能机市场上,Maemo,Android和iPhone到底谁能再现塞班当年的风光?

Maemo有什么特点呢?如果用一句话来描述Maemo,可以说Maemo就是把桌面版的Debian移植到了arm平台。

先看看Maemo的结构是什么样子的:

maemoarchitecture

如你所见,Maemo把开源社区的精华都吸收了:从底至顶来看,Linux内核,GNU的各种库,Debian的包管理系统(最方便,最成熟,最可靠的包管理系统),D-BUS,SQLite,GNOME都融入到了Maemo中。从这个系统构架来看,Maemo的未来应该是一个如同Debian一样强大的系统。我在以前的日志里面说Android就是硬件通吃的Linux先生与无视平台的Java小姐生出来的怪物,这个妖怪异常强大。很容易就会想到Maemo是否能超越Android,其实我感觉Maemo和Android不是超越的关系,因为各自的定位不同。就我目前的了解和理解来看,Android还是比较传统的手机操作系统(虽然它被移植到了各种设备,但这要归功于Linux的优秀和Android的构架出色),至少它是以手机操作系统的身份走向大众的,而Maemo则定位于带通讯功能的MID系统,实现桌面PC到口袋终端的过渡。

Maemo几乎是桌面系统的构架,使得现有的桌面软件移植到Maemo是相当容易的,事实上现在已经有不少Linux桌面软件都移植到了Maemo。另外,Maemo的应用开发采用是C/C++语言,可以直接用gtk开发,这样的优势可以肯定将来这个系统的应用数量是不用发愁的。

二、安装Maemo的开发环境

Android有模拟器给我这样的没有真机的穷鬼过一把干瘾,至少能真实看到这个系统是啥样(这就是传说中的眼淫?)。Maemo也不例外,但是安装过程比Android要麻烦一些。

Maemo基本上就是一个Debian,Nokia官方也只提供了Debian的开发环境(长见识了,原来Nokia也用Debian)。

1.安装xserver-xephyr

xserver-xephyr是一个X server,她能够让你在一个运行中X server里面再运行一个X server,用来模拟设备的DISPLAY。

ganquan@debian:~$ sudo aptitude install xserver-xephyr

2.下载SDK的安装脚本
需要下载两个安装脚本,分别用来安装scrachbox和SDK,scratchbox是开发需要用到的交叉编译工具。
ganquan@debian:~$ wget http://repository.maemo.org/unstable/5.0beta2/maemo-scratchbox-install_5.0beta2.sh

http://repository.maemo.org/unstable/5.0beta2/maemo-sdk-install_5.0beta2.sh

2.1安装scrachbox
ganquan@debian:~$ chmod a+x ./maemo-scratchbox-install_5.0beta2.sh
ganquan@debian:~$ sudo ./maemo-scratchbox-install_5.0beta2.sh -u ganquan
注意,scrachbox在安装过程中会创建一个sbox组,上面的-u参数的后接的用户名就是把ganquan这个用户加入到这个组中。
另外,这个安装脚本在安装之前会自动检查一些环境需求,如果出错就根据相应的提示来解决,都是小问题,很容易解决。
我在安装过程中,遇到了如下问题:
Host kernel VDSO support… no
E: Host kernel VDSO support is incompatible with scratchbox.
E: You can disable VDSO support for this session with
E: ‘echo 0 > /proc/sys/vm/vdso_enabled’ as root
E: For a permanent solution you may add ‘vm.vdso_enabled = 0′
E: to /etc/sysctl.conf and run ‘sysctl -p’ as root
根据提示,在/etc/sysctl.conf中写入vm.vdso_enable = 0,然后用root权限执行sysctl -p即可,再次运行安装脚本,顺利安装完成。

安装需要去源里面下载东西,猜猜有多大,给你看看喽:
Need to get 439MB of archives.
After this operation, 1361MB of additional disk space will be used.

网速慢的话就去喝杯咖啡再来看看。

scratch在debian发行版是默认安装在/目录下的,如果你不想装在这里,就给脚本加上-s path参数,path就是你想安装的地方。

2.2装好了,把当前的会话切到新的组里面去,执行下面的命令即可
ganquan@debian:~$ newgrp sbox
3.接下来装SDK
ganquan@debian:~$ sh maemo-sdk-install_5.0beta2.sh
装好SDK之后就可以登到scratchbox去看看了
ganquan@debian:~$ /scratchbox/login
登录进去之后,你看到的PS1应该长这个模样:
ganquan@debian:~$ /scratchbox/login
Welcome to Scratchbox, the cross-compilation toolkit!

Use ‘sb-menu’ to change your compilation target.
See /scratchbox/doc/ for documentation.
[sbox-FREMANTLE_X86: ~] >

然后去这个链接获取诺基亚的源地址,把你得到的源地址加入到/etc/apt/sources.list,注意,不是加入你的Debian的源列表中,而是加入到从maemo的源列表。也就是上面login之后,vi /etc/apt/sources.list,然后加入你得到的地址。

加入源之后在maemo中执行更新源,安装nokia相关的一些工具、软件包:

[sbox-FREMANTLE_X86: ~] > apt-get update
[sbox-FREMANTLE_X86: ~] > fakeroot apt-get install nokia-binaries

这里又要下载很多东西。。。

4.终于装好了,启动模拟器,一睹Maemo芳容。
启动之前确定上面提到的Xephyr,SDK,还有Nokia proprietary binary packages都装好了。
4.1先开一个模拟器窗口
ganquan@debian:~$ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac -kb &
得到这样的一个窗口:

2009-12-07-164655_802x501_scrot

4.2接下来登入Maemo


ganquan@debian:~$ /scratchbox/login

[sbox-FREMANTLE_X86: ~] >

4.3在Maemo中选择target为X86,设置display
[sbox-FREMANTLE_X86: ~] > sb-conf se FREMANTLE_X86
[sbox-FREMANTLE_X86: ~] > export DISPLAY=:2
4.4最后,启动UI就能看到Maemo的美貌了:

[sbox-FREMANTLE_X86: ~] > af-sb-init.sh start

下面贴一些截图

P1 默认桌面,有两个bookmark,一个是twitter,一个是facebook2009-12-07-170325_802x501_scrot

P2 Android默认有3个桌面,Maemo默认是4个桌面,可以像Android那样拖着切换

在Maemo中失去焦点的部分自动模糊,这个效果不错

2009-12-07-170604_802x501_scrot

P3 Maemo中第三个view默认的两个bookmark,其他view就是干净的壁纸

2009-12-07-170438_802x501_scrot

P4 添加两个bookmark看看

2009-12-07-170947_802x501_scrot

贴图到此结束。

三、体验报告

1.视觉效果来说,非常漂亮,比Android的漂亮多了。

2.模拟器速度很快,占用资源也不算多。Android模拟器慢得要死,特能吃资源,似乎跟Java沾边的都很慢很恶心。

3.可用性超级差,为什么我只有bookmark的截图,没有打开bookmark的截图?因为所有的bookmark都打不开。

不仅bookmark打不开,Maemo自带的Setting工具里面有部分都不能用。这样的模拟器估计alpha版本都算不上。。。

跟Android模拟器比,这点差距实在太大了。

4.我本打算下载别人写好的app,安装到Maemo体验,结果安装不了。我去#Maemo问了一下,有个哥们告诉我说Maemo X86上的模拟器现在还在很渣,不能装写好的app,不能打开app是很正常的,只能用于测试自己写的app。

5.综合感觉,诺基亚加油啊!

继续关注诺基亚,关注Maemo。

后面有时间会继续写跟Maemo相关的东西,谁叫他跟Debian有关呢?

Android 2.0 图标变得可爱了

By ganquan, 2009年11月27日 22:27

一直都是用1.5版本的模拟器,今天用了一下2.0版本的,感觉非常不错。2.0版本的图标设计非常优秀,放弃了花哨的东西,回归简洁。我感觉Android 2.0版本的图标跟Adobe的图标风格很相似,用最简单的图形和最少的文字告诉用户这个程序是用来干啥的,方便用户快速找到自己要用的程序。

虽然2.0版本UI好看很多,但是由于目前很多设备都是1.5版的ROM,加之2.0版本刚放出来没多久,所以开发主要还是在1.5版的SDK上进行,完了可以在2.0的模拟器上测试兼容性。

P1 Android 2.0

模拟器图标变得非常可爱,屏幕无边框,极大地提升了窗口空间利用率

2009-11-27-214003_793x555_scrot

P2 Android 1.5

丑陋的1.5版本默认模拟器,窗口空间浪费太大

2009-11-27-213940_902x751_scrot

EOF

Android开发站点被墙

By ganquan, 2009年11月4日 09:45

封吧,纯技术站点都不放过。

用http://androidappdocs.appspot.com/index.html和迅雷搞定。

一声叹息~

无聊之作

By ganquan, 2009年07月7日 22:54

纯粹无聊之作,练手。累啊。睡觉。

rpcaculator

重发一次“关于我”页面

By ganquan, 2009年07月4日 23:40

体会到了XML的好处。高手不要发笑,这是菜鸟的万里长征第一步啊。

2009-07-04-233432_426x336_scrot

android emulator operations

By ganquan, 2009年07月4日 14:44

1.remove a .apk from emulator

ganquan@debian:~$ adb shell
# ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
# cd data
# ls
misc
local
data
app-private
app
property
anr
dalvik-cache
system
lost+found
# cd app
# ls
com.example.now.apk
com.android.hello.apk
com.example.helloandroid.apk
com.android.demo.notepad1.apk
# rm com.android.hello.apk
# exit

2.use my keyboard to operate emulator:

ganquan@debian:~/android-sdk-linux_x86-1.5_r2/tools$ emulator -help-keys
 
When running the emulator, use the following keypresses:
 
HOME                    Home button
F2, PAGEUP              Menu (Soft-Left) button
Shift-F2, PAGEDOWN      Star (Soft-Right) button
ESCAPE                  Back button
F3                      Call/Dial button
F4                      Hangup/EndCall button
F7                      Power button
F5                      Search button
KEYPAD_PLUS, Ctrl-F5    Volume up button
KEYPAD_MINUS, Ctrl-F6   Volume down button
Ctrl-KEYPAD_5, Ctrl-F3  Camera button
KEYPAD_7, Ctrl-F11      switch to previous layout
KEYPAD_9, Ctrl-F12      switch to next layout
F8                      toggle cell network on/off
F9                      toggle code profiling
Alt-ENTER               toggle fullscreen mode
F6                      toggle trackball mode
DELETE                  show trackball
KEYPAD_5                DPad center
KEYPAD_4                DPad left
KEYPAD_6                DPad right
KEYPAD_8                DPad up
KEYPAD_2                DPad down
KEYPAD_MULTIPLY         increase onion alpha
KEYPAD_DIVIDE           decrease onion alpha
 
note that NumLock must be deactivated for keypad keys to work

Panorama Theme by Themocracy