android 源碼開發 關於編譯等小知識點總結

來源:互聯網
上載者:User

標籤:android   源碼   開發知識點   

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

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

  3. 在伺服器上進行編譯時間,出現了找不到eabi-arm-gcc的錯誤,這部分列印資訊是在build/envsetup.sh中寫入的,然後退出伺服器,再次登陸問題解決......

  4. 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"

  5. recovery模式下,直接adb push的方式替換/sbin/recovery是不可行的,執行替換成功後,重啟後,recovery仍然被替換為之前的,只能使用產生recovery.img,然後使用fastboot flash recovery recovery.img的方式進行升級。因為recovery下的檔案系統是ramdisk類型的,掉電丟失。

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

  7. recovery模式下,adb shell進入後,發現是非root使用者,並且運行su命令失敗,退出後,adb root問題解決。

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

  9. android系統調試過程中,native代碼出現錯誤,System標籤;java代碼出現錯誤,AndroidRuntime標籤。

  10. adb shell dumpsys window displays可以擷取android的螢幕解析度等資訊,

    通過cat  /proc/meminfo命令查看記憶體大小。。

  11. adb shell service list 可以列出系統的service。

  12. make snod將out目錄裡面的檔案打包成img。

  13. recovery模式下,使用framebuffer來顯示介面,擷取螢幕顯示的映像內容:
    adb root
    adb shell cat /dev/graphics/fb0 > 2.data
    使用gimp打卡2.data,根據實際情況設定RGB8888或者RGB565等像素格式,長度和寬度的分別率.

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


本文出自 “萬萬的部落格” 部落格,請務必保留此出處http://4080467.blog.51cto.com/4070467/1743404

android 源碼開發 關於編譯等小知識點總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.