標籤:android 源碼 開發知識點
fastboot flash boot out/target/product/generic/boot.img不管用,提示< waiting for device >
原因尋找:
用fastboot命令查看裝置提示無許可權,如下:
$ fastboot -l devices
no permissions fastboot usb:2-1.3
於是知道是因為許可權問題,是fastboot沒有許可權, 解決步驟:
1. 將fastboot的所有者屬性改成root
用which fastboot命令找到fastboot所在的目錄,然後進入此目錄;再用命令chown改其屬性:
sudo chown root:root fastboot
2. 將其許可權更改一下:
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系統下,adb命令會依賴很多包,因此如果沒有安裝adt工具包,且在源碼目錄下adb命令不可用時,可以先確保android的源碼可以進行編譯,可以編譯後,在編譯出來的out目錄中是有adb命令的。
在伺服器上進行編譯時間,出現了找不到eabi-arm-gcc的錯誤,這部分列印資訊是在build/envsetup.sh中寫入的,然後退出伺服器,再次登陸問題解決......
recovery模式下,找不到adb裝置,不能進行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是不可行的,執行替換成功後,重啟後,recovery仍然被替換為之前的,只能使用產生recovery.img,然後使用fastboot flash recovery recovery.img的方式進行升級。因為recovery下的檔案系統是ramdisk類型的,掉電丟失。
[email protected]:~/workspace/project/rdadroid-5.1.1_r13$ fastboot devices
no permissions fastboot
[email protected]:~/workspace/project/rdadroid-5.1.1_r13$ which fastboot
/home/guofengwan/workspace/project/rdadroid-5.1.1_r13/out/host/linux-x86/bin/fastboot
[email protected]:~/workspace/project/rdadroid-5.1.1_r13$
另外啟動了一個視窗:
[email protected]:~$ fastboot devices
dragon2012 fastboot
[email protected]:~$ which fastboot
/home/guofengwan/environment/adt-bundle-linux-x86_64-20140702/sdk/platform-tools/fastboot
recovery模式下,adb shell進入後,發現是非root使用者,並且運行su命令失敗,退出後,adb root問題解決。
user版本的android代碼,每次修改,如果單獨mm一個jar包或者命令時,會導致新產生的jar包檔案和之前的img檔案中的簽名不一致,因此一但進行了修改,需要整個源碼make一遍。
在android源碼中,新添加一個命令,進入該命令的目錄mm後,會產生到out目錄下的相應的/system/bin/目錄中,再編譯源碼,命令就會產生到system.img檔案中,但是如果提交代碼的話,
在伺服器上不會進入到該命令的目錄進行mm操作的,因此需要修改所編譯的target對應的device.mk檔案,添加到device.mk中。
android系統調試過程中,native代碼出現錯誤,System標籤;java代碼出現錯誤,AndroidRuntime標籤。
adb shell dumpsys window displays可以擷取android的螢幕解析度等資訊,
通過cat /proc/meminfo命令查看記憶體大小。。
adb shell service list 可以列出系統的service。
make snod將out目錄裡面的檔案打包成img。
recovery模式下,使用framebuffer來顯示介面,擷取螢幕顯示的映像內容:
adb root
adb shell cat /dev/graphics/fb0 > 2.data
使用gimp打卡2.data,根據實際情況設定RGB8888或者RGB565等像素格式,長度和寬度的分別率.
如果在源碼中,由於一個模組編譯失敗,但是又不想因為它,導致整個android源碼編譯不通過,可以在build/core/envsetup.mk檔案中,添加SCAN_EXCLUDE_DIRS := 這個模組的名字。可以使其不被編譯。前提是這個模組的編譯與否對其他模組沒有影響。
本文出自 “萬萬的部落格” 部落格,請務必保留此出處http://4080467.blog.51cto.com/4070467/1743404
android 源碼開發 關於編譯等小知識點總結