Mac OS上进行android开发

1. 开机设置ok后,打开app store升级系统到10.9.1,好处是能免费获取那几款办公软件,嘿嘿!

 

2. 安装Xcode,打开终端,输入make之类的指令会提示安装command line tools,安装。jdk默认就有了,不用再装。

 

3. 安装homebrew,上其官网下载。homebre对于习惯了apt搞掂一切的人来说真是福音。使用方法brew help。

 

4. 从android网站上下载已经配置好的eclipse,叫ADT,安装到某位置。

 

5. 创建一个大小写敏感的分区镜像:

 

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg

 

其中40g是指大小,基本够用了。~/android.dmg指定生成镜像位置和名字,不过实际生成的镜像文件名字叫android.dmg.sparseimage

 

然后挂载:

 

hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android

 

实际的挂载点随自己喜欢了,将android源码移动到/Volumes/android中。

 

6.  确保安装了git,python,make(3.82)gnupg

 

7. 进入android4.4,编译,选择了aosp_arm-env

 

PS:

实际在将一份代码移动到/Volume/android时,我犯了错误。从大小写不敏感的分区到敏感分区,导致许多文件的丢失。

后来决定在此分区下载一份代码,结果历时8天。这么艰辛,所以想分享一些东西而让后来者少走弯路。

首先,除非网速很快,否则在合理的时间内同步完代码是不可能的。因为众所周知的原因,网络会周期性的断开,网上流传的循环脚本很低效。

android里面不是每个project都能断点续传的。比如framework/base,有1G多大小,需要保证很长时间的稳定网络,否则从新来过。

这样折腾之后,你会发现project目录下产生了大量的tmp开头的临时文件,这些都是垃圾。而每次都是百分之八九十就出错是很抓狂的,循环脚本根本无法解决这个问题。再者,由于网络不稳定,同步的进程经常会僵死。很多时候你挂机一晚上,早上起来一看,就那么不动了一晚上。这个循环脚本也无法解决。

那怎么解决的呢?vpn,代理,这些才是正道。

而进程僵死的问题,挂了vpn也还是会偶尔出现的,这就需要-j参数来限定线程数,经验而言线程越多死得越频繁,这个不知是网络原因还是python脚本问题。

另外,-c参数能使repo只同步你指定分支,所以能大大减少数据量,加快同步速度。

完成之后,repo forall -c git gc能优化git仓库文件,加上删除临时文件,最终同步完得代码大小时20G。

 

作为一个码农,这些是饭碗。我安分守纪,仅想靠劳动混口饭吃怎么就那么辛酸。

就为了一泄私愤,搞这些东西,浪费了电,浪费了带宽,更浪费了无价的时间。

所以,某党和某人,你们不得好死!

 

 

 

 

Posted by jc 2014年2月21日 21:31


文章本天成,妙手偶的之

近日偶的一个很好玩的对联,叹服作者的才华。

 

苦逼程序员

一个项目两部电脑三餐盒饭只为四千工资搞得五脏俱损六神无主仍然七点起床八点开会处理九个漏洞十分辛苦

十年编码九年加班八面无光忙的七窍生烟到头六亲不认五体投地依旧四肢酸软三更加班只为二个臭钱一生孤苦

 

程序员的苦与乐,只有我们自己才知道啊!

Posted by jc 2013年3月25日 01:21


Pandaboard ES kernel

    目前似乎还没有一个支持完整的内核配置,可能Pandaboard ES的有些驱动还在开发中吧。于是我使用目前开发中的内核,并使用其中的omap2plus_defconfig配置。这个配置似乎是涵盖了mach-omap2里面的所有设备的,所以应该是能启动起来的。

 

    git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

    cd linux

 

    修改其中的Makefile中

    ARCH            ?= arm

    CROSS_COMPILE   ?= arm-none-linux-gnueabi-

    这里有个疑虑,我使用的编译器是arm-2009q3的,不知能否支持ARMv7指令集呢,现不管,试下先。

 

    mkdir ../build-image

    make omap2plus_defconfig O=../build-image

    make O=../build-image -j4

    make O=../build-image uImage

 

    此时提示找不到mkimage指令,赶紧到build-boot/tools目录(见前一篇文章)下拷贝mkimage到/usr/bin。然后再来,OK啦!输出如下:

  Using /home/jc/panda/linux as source for kernel
  GEN     /home/jc/panda/build-image/Makefile
  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
make[2]: “include/generated/mach-types.h”是最新的。
  CALL    /home/jc/panda/linux/scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  CHK     kernel/config_data.h
  Kernel: arch/arm/boot/Image is ready
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-3.6.0-rc5-00315-g3f0c3c8-d
Created:      Sun Sep 16 22:54:17 2012
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    4065584 Bytes = 3970.30 kB = 3.88 MB
Load Address: 80008000
Entry Point:  80008000
  Image arch/arm/boot/uImage is ready

 

    将uImage丢到SD卡boot分区,插入Pandaboard上电,OK!

 

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Linux version 3.6.0-rc5-00315-g3f0c3c8-dirty (jc@debian) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #12
[    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: OMAP4 Panda board
[    0.000000] Reserving 16777216 bytes SDRAM for VRAM
[    0.000000] Memory policy: ECC disabled, Data cache writealloc
[    0.000000] OMAP4460 ES1.1

......

[    2.475982] Kernel panic - not syncing: No init found.  Try passing init= option to kernel. See Linux Documentation/init.t.
[    2.489135] CPU1: stopping
[    2.491973] [<c001cc08>] (unwind_backtrace+0x0/0xf4) from [<c001a9b4>] (handle_IPI+0x130/0x15c)
[    2.501098] [<c001a9b4>] (handle_IPI+0x130/0x15c) from [<c00084f0>] (gic_handle_irq+0x58/0x60)
[    2.510131] [<c00084f0>] (gic_handle_irq+0x58/0x60) from [<c05033e4>] (__irq_svc+0x44/0x5c)
[    2.518859] Exception stack(0xee06ff88 to 0xee06ffd0)
[    2.524169] ff80:                   00008348 00000001 00000000 ee0660c0 ee06e000 c07ce448
[    2.532714] ffa0: c050e4e8 c0755e20 00000000 412fc09a c0756040 00000000 00000001 ee06ffd0
[    2.541290] ffc0: 00008349 c0015f54 20000113 ffffffff
[    2.546569] [<c05033e4>] (__irq_svc+0x44/0x5c) from [<c0015f54>] (default_idle+0x20/0x44)
[    2.555145] [<c0015f54>] (default_idle+0x20/0x44) from [<c00167a8>] (cpu_idle+0x9c/0x114)
[    2.563690] [<c00167a8>] (cpu_idle+0x9c/0x114) from [<804fc274>] (0x804fc274)

 

    因为SD卡的rootfs分区还是空的,内核跑到这无法启动init进程,接下来就是构建根文件系统了!

   

Posted by jc 2012年9月16日 04:16


Pandaboard ES bootloader

    Pandaboard ES使用SD卡作为存储介质,而非常用的NAND。它的omap4460 ROM code能够读取SD卡第一个FAT分区上的文件,因而只需把编译好的bootloader放进这个分区即可。不需要特别的烧录过程,挺方便的,但是频繁插拔卡还是有些麻烦,但是应为用的是u-boot,这个问题其实有解决的办法。

    进入正题,首先SD卡的制作过程参见:http://omappedia.org/wiki/Minimal-FS_SD_Configuration 显然omap4460 ROM code对heads、sectors一些参数是有要求的,按照里面的流程做好就行。

    然后是u-boot代码和编译了。现在u-boot主干已经支持omap4460了。

    git clone git://git.denx.de/u-boot.git

    cd u-boot

    mkdir ../build-boot

    make O=../build-boot omap4_panda_config

    make O=../build-boot

    如无意外,完成后在目录build-boot中有MLO和u-boot.img,把它们拷贝到SD卡的第一个分区中。然后把SD卡插入pandaboard,打开minicom,插上电源可看见如下信息:

Welcome to minicom 2.4

OPTIONS: I18n
Compiled on Sep  5 2010, 09:23:03.
Port /dev/ttyS0

Press CTRL-A Z for help on special keys                                     
                                                                            
                                                                            
U-Boot SPL 2012.07-00135-ge66443f (Sep 01 2012 - 20:55:40)                  
OMAP4460 ES1.1                                                              
OMAP SD/MMC: 0
reading u-boot.img
reading u-boot.img


U-Boot 2012.07-00135-ge66443f (Sep 01 2012 - 20:55:40)

CPU  : OMAP4460 ES1.1
Board: OMAP4 Panda
I2C:   ready
DRAM:  1 GiB
MMC:   OMAP SD/MMC: 0
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Hit any key to stop autoboot:  0
reading boot.scr

** Unable to read "boot.scr" from mmc 0:1 **
reading uImage

** Unable to read "uImage" from mmc 0:1 **
 

 

    至此,pandaboard的引导部分完成,下一步是制作uImage。

Posted by jc 2012年9月01日 04:53


入手Pandaboard ES

    今年早些时候入手的Pandaboard ES,很贵但很值得。这块板子如果不出故障够我玩好几年的了。

    主要特性见官网:http://pandaboard.org/content/pandaboard-es

    6410已经被果断抛弃了,只在某些时候验证问题用。因为软件支持上没有omap开放。

Posted by jc 2012年9月01日 04:33