fastboot flash boot out/target/product/generic/boot.img不管用,提示< waiting for device >
原因查找:
用fastboot命令查看設(shè)備提示無權(quán)限,如下:
$ fastboot -l devices
no permissions fastboot usb:2-1.3
于是知道是因為權(quán)限問題,是fastboot沒有權(quán)限, 解決步驟:
1. 將fastboot的所有者屬性改成root
用which fastboot命令找到fastboot所在的目錄,然后進(jìn)入此目錄;再用命令chown改其屬性:
sudo chown root:root fastboot
2. 將其權(quán)限更改一下:
sudo chmod +s fastboot
再運行
fastboot flash boot out/target/product/generic/boot.img就正常了 :
sending 'boot' (6520 KB)...
OKAY [ 0.207s]
writing 'boot'...
OKAY [ 0.311s]
finished. total time: 0.518s
ubuntu系統(tǒng)下,adb命令會依賴很多包,因此如果沒有安裝adt工具包,且在源碼目錄下adb命令不可用時,可以先確保android的源碼可以進(jìn)行編譯,可以編譯后,在編譯出來的out目錄中是有adb命令的。
在服務(wù)器上進(jìn)行編譯時,出現(xiàn)了找不到eabi-arm-gcc的錯誤,這部分打印信息是在build/envsetup.sh中寫入的,然后退出服務(wù)器,再次登陸問題解決......
recovery模式下,找不到adb設(shè)備,不能進(jìn)行adb操作。同一個終端,在其他的ubuntu臺式機上是可以的,確定了是ubuntu的配置問題。
解決:修改 /etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0600"
改為:
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0666", OWNER="user"
recovery模式下,直接adb push的方式替換/sbin/recovery是不可行的,執(zhí)行替換成功后,重啟后,recovery仍然被替換為之前的,只能使用生成recovery.img,然后使用fastboot flash recovery recovery.img的方式進(jìn)行升級。因為recovery下的文件系統(tǒng)是ramdisk類型的,掉電丟失。
guofengwan@guofengwan:~/workspace/project/rdadroid-5.1.1_r13$ fastboot devices
no permissions fastboot
guofengwan@guofengwan:~/workspace/project/rdadroid-5.1.1_r13$ which fastboot
/home/guofengwan/workspace/project/rdadroid-5.1.1_r13/out/host/linux-x86/bin/fastboot
guofengwan@guofengwan:~/workspace/project/rdadroid-5.1.1_r13$
另外啟動了一個窗口:
guofengwan@guofengwan:~$ fastboot devices
dragon2012 fastboot
guofengwan@guofengwan:~$ which fastboot
/home/guofengwan/environment/adt-bundle-linux-x86_64-20140702/sdk/platform-tools/fastboot
recovery模式下,adb shell進(jìn)入后,發(fā)現(xiàn)是非root用戶,并且運行su命令失敗,退出后,adb root問題解決。
user版本的android代碼,每次修改,如果單獨mm一個jar包或者命令時,會導(dǎo)致新生成的jar包文件和之前的img文件中的簽名不一致,因此一但進(jìn)行了修改,需要整個源碼make一遍。
在android源碼中,新添加一個命令,進(jìn)入該命令的目錄mm后,會生成到out目錄下的相應(yīng)的/system/bin/目錄中,再編譯源碼,命令就會生成到system.img文件中,但是如果提交代碼的話,
在服務(wù)器上不會進(jìn)入到該命令的目錄進(jìn)行mm操作的,因此需要修改所編譯的target對應(yīng)的device.mk文件,添加到device.mk中。
android系統(tǒng)調(diào)試過程中,native代碼出現(xiàn)錯誤,System標(biāo)簽;java代碼出現(xiàn)錯誤,AndroidRuntime標(biāo)簽。
adb shell dumpsys window displays可以獲取android的屏幕分辨率等信息,
通過cat /proc/meminfo命令查看內(nèi)存大小。。
adb shell service list 可以列出系統(tǒng)的service。
make snod將out目錄里面的文件打包成img。
recovery模式下,使用framebuffer來顯示界面,獲取屏幕顯示的圖像內(nèi)容:
adb root
adb shell cat /dev/graphics/fb0 > 2.data
使用gimp打卡2.data,根據(jù)實際情況設(shè)置RGB8888或者RGB565等像素格式,長度和寬度的分別率.
如果在源碼中,由于一個模塊編譯失敗,但是又不想因為它,導(dǎo)致整個android源碼編譯不通過,可以在build/core/envsetup.mk文件中,添加SCAN_EXCLUDE_DIRS := 這個模塊的名字。可以使其不被編譯。前提是這個模塊的編譯與否對其他模塊沒有影響。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。