原因查找:   用fastboot命令查看設(shè)備?..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

android 源碼開發(fā) 關(guān)于編譯等小知識點總結(jié)

發(fā)布時間:2020-06-18 21:09:18 來源:網(wǎng)絡(luò) 閱讀:7331 作者:萬國峰 欄目:移動開發(fā)
  1. 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所在的目錄,然后進入此目錄;再用命令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

  2. ubuntu系統(tǒng)下,adb命令會依賴很多包,因此如果沒有安裝adt工具包,且在源碼目錄下adb命令不可用時,可以先確保android的源碼可以進行編譯,可以編譯后,在編譯出來的out目錄中是有adb命令的。

  3. 服務(wù)器上進行編譯時,出現(xiàn)了找不到eabi-arm-gcc的錯誤,這部分打印信息是在build/envsetup.sh中寫入的,然后退出服務(wù)器,再次登陸問題解決......

  4. recovery模式下,找不到adb設(shè)備,不能進行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"

  5. recovery模式下,直接adb push的方式替換/sbin/recovery是不可行的,執(zhí)行替換成功后,重啟后,recovery仍然被替換為之前的,只能使用生成recovery.img,然后使用fastboot flash recovery recovery.img的方式進行升級。因為recovery下的文件系統(tǒng)是ramdisk類型的,掉電丟失。

  6. 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

  7. recovery模式下,adb shell進入后,發(fā)現(xiàn)是非root用戶,并且運行su命令失敗,退出后,adb root問題解決。

  8. user版本的android代碼,每次修改,如果單獨mm一個jar包或者命令時,會導(dǎo)致新生成的jar包文件和之前的img文件中的簽名不一致,因此一但進行了修改,需要整個源碼make一遍。
    在android源碼中,新添加一個命令,進入該命令的目錄mm后,會生成到out目錄下的相應(yīng)的/system/bin/目錄中,再編譯源碼,命令就會生成到system.img文件中,但是如果提交代碼的話,
    在服務(wù)器上不會進入到該命令的目錄進行mm操作的,因此需要修改所編譯的target對應(yīng)的device.mk文件,添加到device.mk中。

  9. android系統(tǒng)調(diào)試過程中,native代碼出現(xiàn)錯誤,System標(biāo)簽;java代碼出現(xiàn)錯誤,AndroidRuntime標(biāo)簽。

  10. adb shell dumpsys window displays可以獲取android的屏幕分辨率等信息,

    通過cat  /proc/meminfo命令查看內(nèi)存大小。。

  11. adb shell service list 可以列出系統(tǒng)的service。

  12. make snod將out目錄里面的文件打包成img。

  13. recovery模式下,使用framebuffer來顯示界面,獲取屏幕顯示的圖像內(nèi)容:
    adb root
    adb shell cat /dev/graphics/fb0 > 2.data
    使用gimp打卡2.data,根據(jù)實際情況設(shè)置RGB8888或者RGB565等像素格式,長度和寬度的分別率.

  14. 如果在源碼中,由于一個模塊編譯失敗,但是又不想因為它,導(dǎo)致整個android源碼編譯不通過,可以在build/core/envsetup.mk文件中,添加SCAN_EXCLUDE_DIRS := 這個模塊的名字。可以使其不被編譯。前提是這個模塊的編譯與否對其他模塊沒有影響。


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI