fbpx

[Dev. Guide] Build Android ICS 4.0 on Ubuntu

Home Forums General Android OS Development [Dev. Guide] Build Android ICS 4.0 on Ubuntu

  • pj
    pj
    Participant

    เกริ่นนำ
    วิธีต่อไปนี้เป็นเพียงแนวทางในการคอมไพล์เท่านั้น จะสำเร็จหรือไม่ขึ้นอยู่กับหลายปัจจัย เช่น Source vendor/device ของโทรศัพท์ที่มีความเขากันไดดีกับ ICS 4.0 รวมทั้งคอมพิวเตอร์ที่มีสเปคเพียงพอ จึงอยากให้ตรงนี้เป็นที่ปรึกษาหารือเมื่อมีปัญหาและทางแก้ก็เอาแบ่งปันกันครับ

    เตรียมเครื่องมือ
    ผมใช้ Ubuntu 11.05 UPE (แนะนำ Ubuntu 10.04 64bit)
    คอมพิวเตอร์ที่ใช้ : Core2duo 2.5GHz RAM1G ใช้เวลา 5 ชม. 30 นาที (บางครั้งก็หยุดดื้อ ๆ เพราะแรมน้อยเกินไป แนะนำ RAM 1.5 G ขึ้นไป)

    สำหรับมือใหม่ Linux/Ubuntu อยากลองคอมไพล์
    – Linux/Ubuntu คืออะไร http://playoss.com/node/20
    – แนะนำ Ubuntu ที่พร้อมใช้งาน http://www.playoss.com/community_project
    – วิธีเขียนแผ่น Ubuntu 10.10 (บนระบบปฏิบัติการ Windows และ Ubuntu) http://playoss.com/node/51
    – วิธีติดตั้ง Ubuntu http://playoss.com/node/41

    ถ้าพร้อมแล้วมาเริ่มกันเลย

    ติดตั้ง Build Packages
    1. ติดตั้ง Java 6 jdk (ถ้ามีแล้วก็ข้ามไป)

    $ sudo apt-get install sun-java6-jdk

    สำหรับ Ubuntu 11.10

    $ sudo add-apt-repository ppa:ferramroberto/java
    $ sudo apt-get update
    $ sudo apt-get install sun-java6-jdk

    2. ติดตั้ง Build package
    สำหรับ 32 bit

    $ sudo apt-get install git-core gnupg flex bison gperf build-essential
    zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev
    libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown
    libxml2-utils

    สำหรับ 64 bit

    $ sudo apt-get install git-core gnupg flex bison gperf build-essential
    zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs
    x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
    libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown
    libxml2-utils

    หากใช้ Ubuntu 11.10 ให้พิมพ์คำสั่งนี้เพิ่ม

    $ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

    3. ตั้งค่า USB Debug (ถ้าตั้งค่าไว้แล้วก็ข้ามไปข้อ 4)

    3.1 โหลด Android SDK

    $ wget http://dl.dropbox.com/u/3773430/android-sdk_r15-linux.tgz ~/
    $ tar xvfz android-sdk_r15-linux.tgz
    $ PATH=~/android-sdk-linux/tools:$PATH

    3.2 ตั้งค่า USB Vendor ID

    $ sudo gedit /etc/udev/rules.d/51-android.rules

    คัดลอกบรรทัดข้างล่างไปวาง แล้วเพิ่ม USB Vendor ID โทรศัพท์ของท่านลงไปตรง xxxx

    SUBSYSTEM==”usb”, SYSFS{idVendor}==”xxxx”, MODE=”0666″

    USB Vendor IDs http://developer.android.com/guide/developing/device.html#VendorIds
    เซฟ/ปิดไฟล์ แล้วพิมพ์

    $ sudo chmod a+r /etc/udev/rules.d/51-android.rules
    $ sudo restart udev

    4. ติดตั้ง repo

    $ mkdir ~/bin
    $ PATH=~/bin:$PATH
    $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo

    5. ดาวน์โหลดซอร์สโค๊ด

    $ mkdir ~/android4.0
    $ cd ~/android4.0
    $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

    ตอนนี้มันจะถามชื่อและอีเมล กรอกลงไปแล้วกดเอนเตอร์
    ตามด้วยคำสั่ง

    $ repo sync

    ** ไฟล์จะมีขนาดใหญ่ประมาณ 6 GB ควรมีพื้นที่ /Home ประมาณ 25 GB ขึ้นไป

    6. เพิ่ม vendor/device (เพิ่มรุ่นโทรศัพท์ที่ต้องการคอมไพล์)
    โทรศัพท์ที่สามารถเพิมลงไปจะต้องมีซอร์สโค๊ด vendor/device สามารถไปหาได้ที่ https://github.com/CyanogenMod/ (หรือค้นจาก Google) มองหาชื่อรุ่นที่มี เช่น ผมใช้ A88 ก็จะได้เป็น android_device_commtiva_z71 หรือใครใช้ Samsung S2 ก็มองหา android_device_samsung_galaxys2 เป็นต้น

    เมื่อได้มาแล้วก็ git clone มาไว้ที่ ~/android4.0/device ด้วยคำสั่ง (ตัวอย่างเป็น commtiva/z71 ถ้าใช้รุ่นอื่นก็เปลี่ยนในคำสั่งจาก commtiva/z71 เป็น ยี่ห้อ/รุ่น ที่ท่านใช้)

    $ cd ~/android4.0/device
    $ git clone git://github.com/CyanogenMod/android_device_commtiva_z71.git commtiva/z71

    7. เสียบสาย USB เข้ากับคอมพิวเตอร์พร้อมเปิดโหมด USB Debug ที่โทรศัพท์
    (ตัวอย่างเป้น commtiva/z71 ถ้าใช้รุ่นอื่นก้เปลี่ยนในคำสั่ง)

    $ cd ~/android4.0/device/commtiva/z71
    $ ./extract-files.sh

    เป็นการคัดลอก proprietary file จากโทรศัพท์มาไว้ที่ซอร์สโค๊ด

    8. คอมไพล์

    8.1 สำหรับ ARMv6 (เท่านั้น) ต้องเพิ่ม Board ARMv6 ลงไป เพราะใน Google Source ไม่มีให้

    $ curl http://dl.dropbox.com/u/3773430/armv6-vfp.mk > ~/android4.0/build/core/combo/arch/arm/armv6-vfp.mk
    $ curl http://dl.dropbox.com/u/3773430/armv6j.mk > ~/android4.0/build/core/combo/arch/arm/armv6j.mk

    เป็นการพอร์ตซอร์สจาก CyanogenMod มาใช้ ก่อนทำตามข้อ 8.2

    8.2 ลงมือคอมไพล์

    $ . build/envsetup.sh


    ตามด้วยคำสั่ง

    $ lunch

    จะมีรายการแสดงขึ้นมา ให้เลือกรุ่นที่ต้องการบิลด์

    $ full_z71-eng

    หรือพิมพ์หมายเลข

    ตามด้วยคำสั่ง make

    $ make -j`grep 'processor' /proc/cpuinfo | wc -l`

    หลังจากนี้หากมีแจ้งข้อผิดพลาดอะไรค่อยเอามาโพสต์แบ่งปันเพื่อหาวิธีแก้ร่วมกัน

    ขอขอบคุณ
    Google : http://source.android.com/source/downloading.html
    CyanogenMod : https://github.com/CyanogenMod/

12 Comments

    • pj
      pj
      Participant

      ติดตรงไหนโพสต์ถามได้ครับ ผมเขียนจากความเข้าใจ

    • novasid
      novasid
      Participant

      ขอถามนอกเรื่องครับ … เครื่อง A88 (comtiva Z71) ตอน Up ROM 2.3.4 AOSP reset สัญญาณโทรหายไป ( โหมดเครื่องบินล้อคค้าง) น่าจะมาจากสาเหตุไหนครับ มีวิธีแก้ไม๊ครับ … ถ้ายัด ICS 4.0 ตามแนวทางข้างบนจะ clear ปัญหานี้ได้หรือไม่ครับ ( มีเครื่องใหม่แล้ว ตอนนี้ใช้เป็นเครื่องทดลองครับ)

      • pj
        pj
        Participant

        เรื่องอัพรอมแล้วสัญญาณหาย ผมไม่ทราบจริง ๆครับ ว่าเพราะสาเหตอะไร
        ส่วน ICS 4.0 บน a88 ยังเป็นวุ้นอยู่ครับ บิลด์แล้วเจอเออเร่อเรื่อย ๆ แก้ได้บ้าง ไม่ได้บ้าง เลยมาหาพวกที่นี่แหละครับ
        ปัญหาหลัก ๆ ที่เจอคือบาง Source จาก Cyanogen ใช้ C ส่วน Google ใช้ C++ กำลังแก้ไปเรื่อย ๆ
        แก้เสร็จ CM9 ไนท์ลี่ย์ 1 ออกพอดี 55+

        • novasid
          novasid
          Participant

          ขอบคุณครับ ไม่เป็นไรเด๋วลองไปเรื่อยๆครับ ฟ้ืนคืนชีพเมื่อไหร่ จะมาเป็นหนูทดลองเบอร์ แรกๆให้เลยครับ

    • magnamonkun
      magnamonkun
      Participant

      ไว้เคลียร์ Harddisk แล้วจะลองทำดูนะครับ T.T

    • pj
      pj
      Participant

      แรม 1 GB ไปไม่รอด เจอ killed บ่อยมาก ผมคงต้องไปหาแรมมาเพิ่ม
      ตอนบิลด์ x86 ผ่านได้ไงหว่า..

    • iamtthree
      iamtthree
      Participant

      บิลด์ 4.0 ต้องเป็นเครื่อง x64 รึเปล่าครับ เพราะตอน 2.3 ต้องเป็น x64 ถึงจะบิลด์ได้ ตอนนั้นเคยลองพยายามหลายที มีแต่เครื่อง x86 มันไม่ยอมให้บิลด์เลย

      • pj
        pj
        Participant

        ทั้ง ICS4.0 และ GB2.3 CM7 ผมใช้ 32bit ไม่มีปัญหานะครับ
        ถ้า ICS 4.0 อาจจะต้องดาวน์เกรด gcc มาเป็น 4.4 เพราะ 4.5, 4.6 มีปัญหาต้องแก้เยอะ..

        • iamtthree
          iamtthree
          Participant

          ขอบคุณมากครับ เดี๋ยวต้องลองอีกทีซะแล้ว

    • dahoba
      dahoba
      Participant

      เคย compile kernel สำเร็จ ว่างๆ จะลองทำบ้างครับ

    • pj
      pj
      Participant

      A99 คือตัวนี้ครับ https://github.com/edowar/android_device_fb0
      คนพัฒนาเขาปล่อยซอร์สไว้ เป็นซอร์สสำหรับรอม ics

      นี่เป้นฟอรั่มที่เขาปล่อยให้ลอง http://forum.xda-developers.com/showthread.php?t=1434219

    • sonkub
      sonkub
      Participant

      แจ่ม รอเคลียงานเสร็จต้องลองซักที

Viewing 7 reply threads
Viewing 7 reply threads
  • The forum ‘Android OS Development’ is closed to new topics and replies.
To Top