Pages:  1 2 3 4 5 6 7 ... 21 22
lytsing – Page 5 – lytsing's Blog

Author: lytsing

  • Hack c8812e

    媳妇上周入手这款手机,主要研究Android 的UI,她们公司要做客户端。感觉很行,最不爽的,是一大堆定制软件,看着都烦,有些软件可以在软件管理卸载掉,有些需要root,/cust/chinatelecom/cn/app 目录下的OEM app,大都可以删掉。照着这个帖子 《华为C8812E刷机解锁ROOT教程(附带ROM下载地址)》,基本可以搞定。

    很郁闷的是,

    $ adb devices
    List of devices attached 
    ????????????	device

    有一串问号,以为是驱动连不上,试了 adb shell 居然可以进入,原来它就是这样!还有更变态的:

    $ adb logcat
    info: log device is empty!

    关闭了log,解决方法:
    http://stackoverflow.com/questions/6941710/unable-to-open-log-device-dev-log-main-no-such-file-or-directory

    Dial this: *#*#2846579#*#*
    Service menu will appear.
    Go to “ProjectMenu” -> “Background Setting” -> “Log Setting”

    Open “Log switch” and set it to ON.
    Open “Log level setting” and set the log level you wish.

    Reboot the phone.

    有了root,那么限制你的,只有你的想象力了。删除的apk路径在:

    /system/app
    /system/delapp
    /data/cust/app
    /data/cust/delapp
    /cust/chinatelecom/cn/app
    /cust/chinatelecom/cn/delapp

    上面的路径含有 delapp 的,是在管理软件里手动卸载后,在相应的 delapp 目录保存一份。删除之前,要清楚知道你在干什么,如果误删了,只得重新刷机。

    想装上谷歌应用包 gapps,到 http://wiki.cyanogenmod.org/wiki/Latest_Version/Google_Apps 找最新的20121128 gapps 包,90多M,手机的 /system 分区没那么多空间,删掉没用的应用,还是不够,最后选用 gapps-ics-20120422-signed,50M.

    $ adb remout
    $ cd ~/Downloads/gapps-ics-20120422-signed
    $ adb push system/ /system

    上图:c8812e install google apps

    如果误删了某个软件,怎么办?可以到华为官方下载ROM, 使用 split_updata.pl 打开 UPDATE.APP,提取 system.img。

    $ perl split_updata.pl UPDATE.APP
    Extracted output/file01.mbn
    Extracted output/file02.mbn
    Extracted output/boot_versions.txt
    Extracted output/file04.mbn
    Extracted output/file05.mbn
    Extracted output/upgradable_versions.txt
    Extracted output/file07.mbn
    Extracted output/file08.mbn
    Extracted output/file09.mbn
    Extracted output/version.txt
    Extracted output/file11.mbn
    Extracted output/appsboothd.mbn
    Extracted output/appsboot.mbn
    Extracted output/file14.mbn
    Extracted output/boot.img
    Extracted output/file16.mbn
    Extracted output/system.img
    Extracted output/file18.mbn
    Extracted output/userdata.img
    Extracted output/file20.mbn
    Extracted output/file21.mbn
    Extracted output/recovery.img
    Extracted output/file23.mbn
    Extracted output/splash.raw565
    Extracted output/file25.mbn

    deli@deli-ThinkPad-T42:~/a/output$ du -sh *.img
    382M boot.img
    4.0K recovery.img
    189M system.img
    3.7M userdata.img

    但发现 C8812的官方包解包后的boot.img实际上是system.img,system.img实际上是userdata.img,有点变态。boot.img 是 ext4格式,这个好办:

    $ file boot.img
    boot.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (needs journal recovery) (extents) (large files)
    $ mkdir e
    $ sudo mount -t ext4 -o loop boot.img e

    $ cd e/
    $ ls
    app build.prop delapp fonts lib ts.conf usr wifi
    bin cdrom etc framework media tts vendor xbin

    取你所取。

  • 新浪微博Android客户端实战(1-前言)

    时下流行风,书籍前头喜欢冠上“人人都”,比如《人人都是产品经理》,《编程ING:人人都能学会程序设计》,我也想跟个风,这年头,不写个微博客户端,都不好意思说自己是做Android开发的。

    目前网上已经有一大把教程如何写客户端,写的挺不错的,但有些内容已经过时,而且代码不是很完整。而code.google.com 有很多开放的代码,但又缺乏文档,有些代码写得不敢恭维,对代码有洁癖的我,实在无法看下去了。本博客很久不更新,一些网友怂恿我写一些关于Android开发的文章,想来想去,还是以某个应用的开发为题材吧。新浪官方的客户端为了兼容低版本,使用的api还是老的,现在Android 4.0 使用全新的 UI设计、交互体验,简洁流畅。我认为,一个好的 app 应该与操作系统保持设计的一致性。本系列文章基于 Ice Cream Sandwich,旧的 api不再使用。

    以我的经验,写Android应用程序大部分时间花在UI,页面布局上,真正写代码的时间反而少。本客户端的目标不是做个大而全的东西,2-8定律无处不在,实现20%的功能,满足正常使用即可。基本功能:登录,Timeline,详细信息,发文,回复,转载。其他砍掉,事实上,一般人的使用习惯无非就是阅读信息,发文,评论,repost,用心研究这几个功能,做到极致,就很了不起了。

    W.Jason Gilmore 在《PHP与MySQ程序设计》里写道:”优秀的程序员会编写可靠的代码,而卓越的程序员则会重用优秀程序员的代码。“。使用新浪微博提供的SDK,再加上一些优秀的Android UI 开源组件,我们可以很快速的开发一款客户端。

    目标读者:本文不会step-by-step讲得很详细,前提假设你会搭建开发环境,会一些起码的编程基础,看过ApiDemos,正好挽起袖子干一些事。所有的代码都放在github上,可以下载编译安装运行,有个直观感觉,比什么都好。好了,让我们开始新的征程。

  • Bluehost Rails 3.2.8 Ruby 1.9.3

    This is my bluehost environment:
    # ruby --version
    ruby 1.8.7 (2012-02-08 MBARI 8/0x6770 on patchlevel 358) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2012.02
    # rails -v
    Rails 2.3.11

    I need to upgrade the ruby and rails version, take a Live Chat with Bluehost support, the guy let me follow this post https://my.bluehost.com/cgi/help/rails but it just tell us how to deploy the rails, so I need to reinstall the rails.

    Install Ruby 1.9

    When I install RubyGems, it complains:

    [~/src/rubygems-1.8.24]# ruby setup.rb
    /home4/lytsingo/.local/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
    It seems your ruby installation is missing psych (for YAML output).
    To eliminate this warning, please install libyaml and reinstall your ruby.
    RubyGems 1.8.24 installed

    so need to install libyaml first

    # mkdir ~/src
    # cd ~/src
    # wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
    # tar xvf yaml-0.1.4.tar.gz
    # cd yaml-0.1.4
    # ./configure -prefix=$HOME/.local
    # make -j8
    # make install
    # make clean

    *Note*: Let compile faster, I use make -j 8, it depends your cpu processors, see:

    cat /proc/cpuinfo |grep processor |wc -l
    8

    # wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz
    # tar xvf ruby-1.9.3-p0.tar.gz
    # cd ruby-1.9.3-p0
    # ./configure -prefix=$HOME/.local --disable-install-doc --with-opt-dir=$HOME/.local
    # make -j8
    # make install
    # make clean

    Install gems

    # wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.24.tgz
    # tar xvf rubygems-1.8.24.tgz
    # cd rubygems-1.8.24
    # ruby setup.rb 

    Install Rails 3

    gem install rails -v 3.2.8 --no-rdoc --no-ri

    Check it out:

    # ruby -v
    ruby 1.9.3p0 (2011-10-30) [x86_64-linux]
    # rails -v
    Rails 3.2.8

    Em, it looks so nice, enjoy!

  • 编码生成新浪微博短链接

    短链接是个好东西,用在短信里省了不少文字。新浪微博API提供短链接的接口,但要申请weibo appkey ,一下子搞清楚什么是oAuth2.0,估计折腾一段时间。有现成的网页转换地址 http://www.henshiyong.com/tools/sina-shorten-url.php ,在此基础上修改即可。

    用浏览器查看 的代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset="UTF-8" />
    <title>在线版新浪微博短链接生成器</title>
    <meta name="description" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成,方便快捷完成您的URL转换!" />
    <meta name="keywords" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成" />
    <style type="text/css">
    textarea{border:5px solid;border-radius:8px 8px 0 0;width:400px;padding:8px;}
    body{text-align:center;margin:150px auto;}
    </style>
    </head>
    <body>
    <h2>请输入你需要转换的网页地址</h2>
    <form action="" method="post">
    <input type="" name="url" style="width:400px"/><br/>
    <input type="submit" value="转换" name="submit">
    </form>
    </body>
    </html>

    小部队先上,用Ruby写个简单脚本,发 POST 请求。

    [deli@violet ~]$ ruby sina-shorten-url.rb

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset="UTF-8" />
    <title>在线版新浪微博短链接生成器</title>
    <meta name="description" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成,方便快捷完成您的URL转换!" />
    <meta name="keywords" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成" />
    <style type="text/css">
    textarea{border:5px solid;border-radius:8px 8px 0 0;width:400px;padding:8px;}
    body{text-align:center;margin:150px auto;}
    </style>
    </head>
    <body>
    <h2>新浪短连接已经生成:</h2><textarea>http://t.cn/h51yw</textarea><h2>继续转换</h2></body>
    </html>

    提取 textarea 标签数据即可,使用正则表达式最方便的了。

  • Android 上的消息推送通知(Push Notification)

    Android froyo 之后,引入了 C2DM,基于XMPP 协议实现的推送机制。C2DM 的优点无需多言,但缺点也是显而易见:
    1. 需要google账号。这一点约束太大了,很多手机厂家把google Apps给阉割了。
    2. 国内服务不稳定,原因你懂得的。如果有能力在国外有服务器,可以很快的发送消息到C2DM 服务器,从国内post 数据到 Google server,几乎没响应。
    3. C2DM 仅支持 Android 2.2 以上

    C2DM 运行在系统级别上,系统内存少时不容易被kill。C2DM与Gmail、Gtalk等共用同一个连接,减少耗电。跟iOS不一样,Android支持App常驻进程,所以大家都不愿意用。现在一些恶意的Android软件,安装后后台开启一个服务,定时向用户PUSH垃圾广告,很邪恶。国内互联网公司都瞎折腾这样那样云,但就没有一家愿意开发和提供一个Google C2DM的墙内替代品。

    目前基于长连接push的开源软件有:

    AndroidPN

    AndroidPN 是一个基于XMPP协议的java开源Android push Notification 实现,包含server与client,server 使用SSH框架,默认后台使用jetty,数据库是hsqldb,该服务器端基本上是在openfire基础上修改实现的,据说微信在Android上的推送实现也是基于openfire,具体未详。官方上的版本已经很久没更新,而且还有一些bugs,比如:
    1. 当服务器端重启的时候,客户端就无法在连接到服务器.
    2. 不支持离线消息。
    3. 推送多条消息重复问题

    可以改造成tomcat版本,已经有很多网友在做这样的事。

    MQTT

    IBM 产品,使用php写的,据说外国网友在论坛上爆料,Facebook Android客户端的推送使用这个。

    没有条件自己搞 push 服务器的,可以使用第三方服务

    Urban Airship http://urbanairship.com/
    http://www.push-notification.org/
    http://www.android-push.com/

    据了解,钱方支付的 Android 客户端是使用 http://www.android-push.com/ 的服务。