小亨的探险游戏 Rotating Header Image

升级android SDK

我的手机一直还是用的android 1.5的rom,sdk也是一直用的1.5,从r1 到 r3。周末找了个时间,准备把1.6和2.0都搞下来,研究一下,也做做兼容性测试。

我发现 http://developer.android.com 已经不提供sdk包的直接下载了。取而代之的是一个sdk manager工具。但是,缺省情况下我们无法下载sdk,因为developer android已经被gfwed了(我一直不能理解为什么大量的开发网站被墙)。你需要在setting菜单下,选中 Force https sources to be fetched using http。这样你就可以下载了。sdk会被下载在platforms下统一管理。

新的sdk的缺省皮肤我很喜欢,或者说新的sdk根本没有缺省就没有皮肤。因为我的x61只有1024*768,在1.5上的模拟手机的皮肤太大了,导致我在横屏调试的时候,有半屏是看不到的。新的avd也提供了更多的选项,支持各种screen size,可以支持sdk并且自定义sd卡的大小。

android skd 1.6

update: 已经测试出一个兼容性的Bug。

Google要求Android Market Developer签新的协议

今天一早打开android market的开发者账号,发现Google要求我们在30天内要签新的分发协议,否则应用就不能上线了。

android developer distribution agreement

我快速的扫了一下,还是发现在market的退款问题上有了点改变。如果是可以预览的,如(铃声,壁纸),是不能退款的。如果是不可以预览的,在48小时内可以全额退款。原来是24小时,现在是48小时,好像对开发者来说考验更大了一点。不论如何,人在屋檐下,这个协议还是要签啊。

Android Market不需要游戏?

1. 在Android Market上,Application有8488个,Game有1985个。

2. 在Android Market上,免费Game和收费Game的比例大概是 10 : 1。

3. 在IPhone上卖了几十万份的Trism,在Android Market上只买了100-500。

4. 我开发的 七彩连珠,上线两个月,免费版下载马上就突破1w,付费版只卖出3份。

5. 我花了几天开发的Application - Whiteboard (代码很少,时间都花在找图,做图了),第一天上线,卖了5份。

我们就只做Application吧。

如何在Ubuntu的机器上安装Windows

机器:Thinkpad X61 (只安装了Ubuntu,而且没有任何其他分区。)

目标:安装 Ubuntu, Windows双系统

1. 在Ubuntu 下划分一块分区。用Ubuntu Live CD (从7.10以后,安装CD和Live CD就是一张盘了)光驱启动。用sudo gparted来resize主分区,比如从120GB缩到60GB。再把剩下的空间建立为主分区,这个很重要,否则无法安装Windows。Apply后,就是OK。(gparted的进度条没有显示当前的%,我等了10分钟就开始不耐烦了,网上一查,有人等了30分钟,就放心了。)

2. 安装Windows。重启,用Windows安装盘启动。要注意的是,要把BIOS里的AHPI的选项改成Compactability,否则安装蓝屏。把Windows安装在刚才的分区就好了。

3. 修改Grub。这时候用硬盘启动只能进入Windows,Ubuntu不见了。用Ubuntu Live CD再次重启,修改Grub。可以参考这篇文章。https://help.ubuntu.com/community/WindowsDualBoot

4. 修改menu.lst。这次你又只能进Ubuntu了,别担心,这是最后一步了。进入Ubuntu后,修改/boot/grub/menu.lst,按照里面的例子把Windows的menu配出来,就一切OK了。

(如果你要是先装的Windows在装Ubuntu,就完全不用这么麻烦。Ubuntu会帮你把一切做好。 )

新的尝试

两年前,我从公司辞职,做一名独立开发者。没有了固定的工资,没有Project Manager的职位,没有公司的股票期权。

在这两年中,我尝试了很多,自己做站并寻找VC,技术咨询,网赚,做外包的Project,参与各种创业团队,公益project。

现在,我又开始了新的尝试,移动应用。这是一个看起来很理想,竞争却极度残酷的方向。可是不管怎么说,我就是想试试。

感谢老婆和家人对我的支持,是你们让我拥有了随心所欲,无憾的人生。

henryhuang’s desktop

(my desktop for work)

Google开始升级Android Market

1. 开发者可以上传应用程序(Screenshots)的截图,最多两张。但是,目前还只能在market.android.com的网站上看到,手机上的market还不行。

2. 开发者可以上传推广图标(Promotional Graphic)和推广文字(Promotional Text)

3. 增加了子分类,sports, health, themes, and comics。

4. 意大利的开发者可以出售付费的app了。(中国开发者基本无念了)

升级Android 1.5 SDK, Release 3

我没有注意,原来七月份SDK就已经Release 3了,我还一直用Release 1呢。升级的过程非常简单,http://developer.android.com/sdk/1.5_r3/index.html 下载sdk,解压到目录。在eclipse里修改 window -> preference -> android -> SDK Location即可。在把tools/bin的路径指明一下,让adb这些用的是新的就OK了。

我还顺便升级了一下模拟器的皮肤,用上了G2的皮肤,比原来缺省的好看很多。下载地址http://www.hiapk.com/bbs/thread-3184-1-1.html

开始使用Gnome-Do

Thinkpad x61的屏幕太小,Ubuntu的上下两个panel又占去了宝贵的两行。终于,我下决心把他们合并为一行。Window List 和 Notification Area不能去掉,想来想去只能把Launcher(快捷方式)去掉,同时启用Gnome-Do。

在Ubuntu 8.04 hardy amd64上安装Gnome-Do不怎么容易。官方在launchpad上的源只提供了0.5.99版本。用源代码编译又有mono库的依赖。最后google找到了第三方的源提供0.8.1版本,http://directhex.mfgames.com/hardy.html

首先试了Gnome-Do的Docky,非常炫,但是乱,而且必须要开compiz特效。我从来不开这些浪费资源又没有实际意义的东西。所以,只能用Gnome-Do的经典用法,早知道就用0.5.99就行了。

还遇到一个问题,有一些应用程序Gnome-Do并没有索引到。解决办法是:自己做Launcher放到Main Menu里,重新启动Gnome-Do后,就可以找到了。自己做Launcher还可以加各种参数,很好很好。

补充 :

如果修改了Laucher,又希望do能及时更新,只需要删除 /home/username/.local/share/gnome-do/plugins-0.8.1目录,重启do,就能重建索引

我的第一个Android小游戏ColorLines

ColorLines(七彩连珠),market上搜索ColorLines即可安装,免费。

游戏在 9 x 9 的棋盘内,将5个或以上相同颜色的彩球连成直线,横、竖、对角均可,则彩球消失并得分,每次连成线的彩球越多,得分越多。玩家每轮移动一个球,如果此次移动没有消掉彩球,棋盘上将随机产生3个新的彩球。当整个棋盘满后,游戏结束。

“游戏开始后,玩家首先选择待移动的色球,然后选择移动目的地,这时会出现一个黄色的方格框(提示当前选中的移动目的地),继续点击该黄色方格框才能完成一次色球的移动。这种设计是为了帮助玩家在游戏中减少因为手指触摸而出现的位置失误。”(感谢好友小力写的玩法提示

ColorLines

这是我一边学android一边练手的习作,还有很多不足,希望大家提出意见和建议。同时,也欢迎大家一起讨论android开发,一起进步,呵呵。

Android开发FAQ之二

1. 如何避免打开键盘或横竖屏切换,active重启?

在androidmanifest.xml中的activity标签加入这个属性android:configChanges=”orientation|keyboardHidden”

然后重载onConfigurationChanged(Configuration newConfig)这个方法

public void onConfigurationChanged(Configuration config)  {
super.onConfigurationChanged(config);
}

2. 如何处理界面的延迟动画

用Thread.sleep()是不行的,要用android.os.Handler,例如:

class RefreshHandler extends Handler {

      public void handleMessage(Message msg) {

         Main.this.updateUI();

      }

 

      public void sleep(long delayMillis) {

         this.removeMessages(0);

         sendMessageDelayed(obtainMessage(0), delayMillis);

      }

   };

 3. 单实例方式的Activity

在androidmanifest.xml中的activity标签加入这个属性

android:launchMode=”singleInstance”

其实一共有四种选项,大家可以参考 http://developer.android.com/guide/topics/manifest/activity-element.html#lmode