2013年12月9日 星期一

[windows .bat] sleep and for-loop

@echo "Please check your device..."
@pause

@echo "Start Test... Wait 10s"
@ping 127.0.0.1 -n 30 -w 10000 >nul

@echo "Wait 20s"
@ping 127.0.0.1 -n 30 -w 20000 >nul


@set count = 0
@set max = 10000
:loop
@set /a count = count + 1
@echo Run %count% times
@if %count% == %max % goto end
@goto loop
:end


[shell script] Pause to wait for user key press and for-loop

#!/bin/bash

# Waits for user key press.
Pause()
{
 OLDCONFIG='stty -g'
 stty -icanon -echo min 1 time 0
 dd count=1 2>/dev/null
 stty $OLDCONFIG
}

echo "press a key to continue..."
Pause 

echo "wait 10s"
sleep 10

# for loop 1~10000, i++
for i in 'seq 1 10000'; do echo "Run $i times" done

[Android build code] /bin/sh gcc: Command not found

請先確定有沒有裝 gcc

如果裝過了,移除後重裝一次

On Ubuntu / Debian -

sudo aptitude remove gcc
(也可以用 apt-get)
(可能也會移掉build-essential 等相關套件,等一下要記得裝回來)

sudo aptitude install gcc

重裝不行再去試其他更麻煩的辦法……



ADB @ Win7 64bit 和 adb CreateProcess failure, error 2 的解決方式

今天遇到的是這個問題
* daemon not running. starting it now *
CreateProcess failure, error 2
* failed to start daemon *
error: cannot connect to daemon

原來是我借到了一台裝到 win7 64bit 的 NB

所以把 原來應該複製到 C:\Windows\System32\ 底下的
adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll 放到
C:\Windows\SysWOW64 底下即可
(我現在是兩邊都有放的狀態,如果只放64底下不行的話,請兩邊都放)

再來就是確認windows有裝了你這隻手機的 USB driver
基本上先打開手機的USB debugging後,再接到windows7,電腦會自動安裝driver
有的手機也會提示你要不要裝driver

如果以上不能解決,那只好另請高明了……



2013年12月5日 星期四

AOSP repo init with 403 error (proxy problem)

以下解決方法適合在公司(有proxy)的情況

Reference:

操作過程整理如下,先想好你要把repo放在哪裡,我是放在AOSP資料夾底下
以便和公司用的區分開來,如果你沒有這個問題
直接把抓下來的repo 放到 /bin 底下
這樣到處都可以直接使用 repo 指令,
不需要每個專案都複制製一個repo檔案 也就不用在 repo 前面加 ./ 了

1.      $ mkdir AOSP
2.      $ cd AOSP
4.      $ chmod a+x repo

在公司(亦即有proxy) 請加入 step56,沒有請跳過
5.      $ export http_proxy=<proxy_ip>:<port>
6.      $ export https_proxy=<proxy_ip>:<port>

Ex:      
$ export http_proxy=10.11.123.234:2345
$ export https_proxy=10.11.123.234:2345

8.      $ ./repo sync

如果 repo sync 過程中經常出現  request fail / fetch errors

Solution (1)先查一下 googlesource.com 跟 android.googlesource.com 的 ip

$ nslookup googlesource.com
$ nslookup android.googlesource.com

(如果兩個ip一樣,或很像,建議多查幾次確定一下,我查到第四次發覺會變 =_=)

假設查到的分別是 74.125.31.82 and 173.194.74.82

$ sudo vim /etc/hosts

加入下面這兩行

74.125.31.82 googlesource.com
173.194.74.82 android.googlesource.com

ps.
1. 如果兩個ip一樣,或是很像,建議多查幾次確定一下,因為小蒨有遇到查到第四次會改變
2. 不同台電腦,或是換了位置上網(ex: 從家裡到公司),
   亦或是隔了一天要重新執行時發覺老毛病又犯了,也可以再check一下

Solution (2) Setting TCP/IP stack

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0


上面這兩個方法有幫助小蒨改善 repo sync 一直中斷的現象,給各位參考。