-->

2011年10月15日 星期六

[教學] 下載 Android Source (2.3)


kernel.org hacked workaround 下載 source 方法:

安裝 Cygwin:

套件要裝
git
git-completion
git-gui
gitk
git-oodiff
libiconv
python
readline (libreadline5libreadline6libreadline7)
wget

之後的流程:

執行 Cygwin
mkdir ./bin

由於 kernel.org hacked,改用下面的方法抓 repo
(原本官方的方法:curl http://android.git.kernel.org/repo > ~/bin/repo)

chmod a+x ./bin/repo
export PATH=~/bin:$PATH
.bash_profile 加入 export PATH=~/bin:$PATH

mkdir gingerbread
cd gingerbread 

下載 2.2
repo init -u git://codeaurora.org/platform/manifest.git -b froyo
(原本官方的方法:repo init -u git://android.gt.kernel.org/platform/manifest.git -b froyo)

下載 2.3
repo init -u git://codeaurora.org/platform/manifest.git -b gingerbread
(原本官方的方法:repo init -u git://android.kernel.org/platform/manifest.git -b gingerbread)
repo sync


Android 的版本代號
1.5
cupcake
1.6
donut
2.0/2.1
eclair
2.2
froyo
2.3
gingerbread


如果出現下面的錯誤

$ repo init -u git://android.gt.kernel.org/platform/manifest.git -b ginerbread
      0 [main] python 3232 C:\cygwin\bin\python.exe: *** fatal error - unable to
ent: 0x3A0000 != 0x3D0000
Stack trace:
Frame     Function  Args
0028A6A8  6102796B  (0028A6A8, 00000000, 00000000, 7594D3FB)
0028A998  6102796B  (6117EC60, 00008000, 00000000, 61180977)
0028B9C8  61004F1B  (611A7FAC, 6124D78C, 003A0000, 003D0000)
End of stack trace
      0 [main] python 8048 fork: child 3232 - died waiting for dll loading, errno 11
Traceback (most recent call last):
  File "/home/Joybo/bin/repo", line 685, in <module>
    main(sys.argv[1:])
  File "/home/Joybo/bin/repo", line 652, in main
    _Init(args)
  File "/home/Joybo/bin/repo", line 184, in _Init
    _CheckGitVersion()
  File "/home/Joybo/bin/repo", line 209, in _CheckGitVersion
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
  File "/usr/lib/python2.6/subprocess.py", line 633, in __init__
    errread, errwrite)
  File "/usr/lib/python2.6/subprocess.py", line 1049, in _execute_child
    self.pid = os.fork()
OSError: [Errno 11] Resource temporarily unavailable

解決方法:
cd c:\cygwin\bin
修改 rebaseall 的第 110 行
sed -e '/cygwin1\.dll$/d' -e '/cyglsa.*\.dll$/d' -e 's/^/\//' >"$TmpFile"
改成
sed -e '/cygwin1\.dll$/d' -e '/cyglsa.*\.dll$/d' -e 's/^/\//' -e '/\/sys-root\/mingw\/bin/d' >"$TmpFile"
然後執行
ash /usr/bin/rebaseall




沒有留言:

張貼留言