Guild Hướng dẫn Build Hexagon ROM Marshmallow [Update 10/03/2017, Ubuntu 16.04.02, OpenJDK8]

Thảo luận trong 'Hướng dẫn chung' bắt đầu bởi nthoa.it, 24/5/16.

  • by nthoa.it, 24/5/16 lúc 22:07
  • nthoa.it

    nthoa.it Administrator Thành viên BQT We Are Superman

    Bài viết:
    4
    Đã được thích:
    4
    Điểm thành tích:
    3
    Tham gia ngày
    10/5/16
    [​IMG]
    Xin chào mọi người! Nay mình viết 1 bài nhỏ để hướng dẫn nhưng bạn muốn tìm tòi về build rom Android nhưng chưa biết gì. Đây là bài viết cơ bản thôi, có thể khi các bác làm sẽ gặp một số vướng mắc. Nếu có vướng mắc thì chia sẻ lên đây để mọi người cùng giải quyết.
    Cảnh báo : Hướng dẫn siêu thân thiện và dễ hiểu, ngay cả học sinh lớp 5 cũng làm được :)


    I.Xây dựng môi trường cần thiết cho việc build Rom

    [​IMG]
    • Đã thử nghiệm và chạy ổn định trên các phiên bản Ubuntu - 14.04,14.10,15.04 16.04 (64-bit)
    • Bất kỳ Linux Os khác dựa trên Ubuntu Distro như Lubuntu, Xubuntu, vv.
    • Yêu cầu phần cứng (tối thiểu của ít nhất một dual core CPU và 8GB RAM(android 7.1.1),lưu ý với 8GB ram để build các phiên bản android mới gần đây là không thể, bạn sẽ cần phải swap thêm ít nhất 4GB nữa. Hướng dẫn Swap ngay bên dưới bài viết.)
    • Ổ cứng lưu trữ tối thiểu là 70GB. Có nhiều hơn nữa sẽ có ích với CCache (* Sẽ được hướng dẫn ở phần sau)
    Yêu cầu cài đặt các gói cần thiết dưới đây:
    Ở Ubuntu các bạn dùng tổ hợp phím Ctrl + Alt + T để mở Terminal.
    (Bên trong cửa sổ terminal, lệnh Ctrl + C/V ko hoạt động vì vậy để paste code ra bạn cần click chuột phải,chọn Paste)

    Đơn giản chỉ cần copy & paste những dòng này vào terminal + Enter ;):


    Mã:
    $ sudo apt-get install openjdk-8-jdk
    Với UBUNTU phiên bản 16.04

    Mã:
    $ sudo apt-get install openjdk-8-jre

    Ở đây mình sẽ ví dụ trên Ubuntu 16.04.1, paste dòng này vào và enter
    [​IMG]

    Lưu Ý : Khi dùng các lệnh có bắt đầu "Sudo" sẽ cần đến quyền Administrator nên terminal sẽ hỏi mật khẩu của bạn.
    Nhập mật khẩu,enter. Lúc nhập mật khẩu terminal sẽ không hiển thị các dấu chấm hay * nên bạn không cần lo về việc đó, chỉ cần nhập đúng và enter.

    [​IMG]


    Một số gói cần thiết khác
    [ Chú Ý: Chạy lệnh này cài đặt các gói cần thiết khác để xây dựng android,bắt buộc ! ]
    Mã:
    $ sudo apt-get update && sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-8-jre openjdk-8-jdk pngcrush schedtool libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib maven tmux screen w3m ncftp
    [​IMG]

    II. Bắt đầu tải Source về máy
    1. Khởi tạo 1 số thư mục cần thiết

    Mã:
    mkdir ~/bin

    [​IMG]

    Mã:
    curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

    [​IMG]

    Mã:
    chmod a+x ~/bin/repo

    [​IMG]

    2. Tạo thư mục chứa Source

    Mã:
    mkdir ~/Hex

    [​IMG]

    Lúc này thì các bạn mở File lên xem, thư mục source Hex đã được tạo.
    [​IMG]

    Mã:
    cd ~/Hex

    Lệnh này để đưa terminal vào thư mục chứa source Hex.

    Mã:
    repo init -u https://github.com/HexagonRom/android_platform_manifest -b hex-7.1

    Gán repo cho thư mục source.
    [​IMG]
    Enter

    [​IMG]
    3. Tải source về
    Đây là code để kéo source về, lúc update source, các bạn cũng cd vào thư mục hex, "repo sync" để cập nhật source mới nhất.

    Mã:
    repo sync -f 

    [​IMG]
    [​IMG]

    Cái này các tải về khoảng 17GB+, tốc độ nhanh chậm tùy internet nhà bạn. Nói chung tới đây rồi thì đi cafe đi, xong về rồi làm tiếp :D.

    4. Thiết lập Ccache
    Việc này các bạn làm sau khi source đã được kéo về hoàn tất.Càng nhiều CCache càng rút ngắn thời gian build rom.






        • Ccache là một phương pháp sử dụng một không gian lưu trữ quy định để tăng tốc độ build. Nó có thể được gọi là bộ nhớ đệm cùng một thiết bị Android của bạn làm để tăng tốc độ ứng dụng và hệ thống khởi động lần. Trong trường hợp này , ccache sẽ giúp build Hexagon ROM nhanh hơn.
        • Có khả năng cắt giảm xuống 50 % thời gian thực hiện





        • Để thiết lập Ccache, hãy làm theo hướng dẫn dưới đây:
        • Đưa Terminal vào thư mục source trước.
    Mã:
    echo "export USE_CCACHE=1" >> ~/.bashrc

    Mã:
     ~/Hexagon/prebuilts/misc/linux-x86/ccache/ccache -M 50G


    II. Thực hiện BUILD Rom
    Ở đây các bạn phải xác định thiết bị các bạn muốn Build có mã gì. VD Như bài hướng dẫn này mình sẽ build cho Oneplus One mã là bacon
    Vẫn ở giao diện dòng lệnh terminal, di chuyển đến thư mục Hex đã tạo phía trên. Sau đây là 1 số lệnh để thao tác.

    Build rom

    Mã:
    build/envsetup.sh && brunch <device>
    "build/envsetup.sh là code setup mà mỗi lần mở máy build,bạn phải đưa terminal vào thư mục source rồi nhập nó để setup sau đó mới build rom.

    <device> là mã máy, Oneplus One là bacon, sau khi hoàn thành sẽ có 1 dòng màu xanh ghi là ... Và rom sẽ nằm ở thư mục Hex/out/target/product/<devicename>/


    Ví dụ để Build cho Oneplus One, mình sẽ nhập :
    Mã:
    brunch bacon
    Bacon là tên mã của Oneplus One

    Một số lưu ý khác :

    (Hướng dẫn build cho máy không hỗ trợ sẽ được mình cập nhật trong bài viết này sau)
    - Không phải bất kỳ thiết bị nào cũng build ngay được vì tùy thuộc vào nó có hỗ trợ hay không,nếu là máy có trong danh sách, bạn chỉ việc gõ "brunch <tên máy>" là nó tự kéo resource (Kernel,device,...) về.

    - Đối với máy không có trong list hỗ trợ,bạn vẫn có thể tự build cho mình vẫn được,với điều kiện máy đang được dev hỗ trợ cm13 không chính thức và có open resource.

    3. Build 1 APK hệ thống

    Mã:
    make [Package Name]
    VD như muốn build trình gọi điện thoại, Dialer

    Mã:
    make Dialer
    4. Một số lệnh khác.
    Xóa các dữ liệu đã build
    Mã:
    make clean
    Hoặc

    Mã:
    make clobber


    Reset lại source nếu bạn có lỡ tay xóa hay sửa gì đó
    Mã:
    repo forall -vc "git reset --hard"
    Cập nhật dữ liệu mới nhất

    Mã:
    repo sync --force-sync
    Hoặc

    Mã:
    repo sync -jX
    Lệnh này nhằm ép cho máy xử lý nhiều source một lúc trên 1 nhân CPU để sync source nhanh hơn.

    Ví dụ "repo sync -j8" là 8 một lúc.

    IV. Thông tin tham khảo.

    Bảng mã máy rom Hex hỗ trợ xem Tại đây

    Những Thiết bị đang được hỗ trợ chính thức xem Tại đây

    Source Code Xem Tại đây

    Swap
    [​IMG]

    (Lưu ý cách này có thể thực hiện được trên hầu hết các phiên bản Ubuntu kể cả mới nhất)
    Đối với những bạn sở hữu một cấu hình yếu chỉ có 4GB hoặc 8GB ram thì việc hoàn

    thành một bản rom trở nên khó khăn,trong quá trình build, ubuntu sẽ ngốn
    tất phần ram còn trống của bạn dẫn đến lỗi "allocating memory" khi không
    còn ram trống nữa vì vậy Swap sẽ cho máy của bạn thêm một chút "không
    khí" để dễ thở hơn.
    Hướng dẫn của mình sẽ giúp bạn tạo một vùng/file swap cứng,không bị mất đi khi reset máy.
    Ok, chúng ta bắt đầu. (Copy => Paste => Enter)

    Tạo một vùng swap 8Gb

    (Bạn swap bao nhiêu tùy ý, nhưng đảm bảo bạn còn trống nhiều ổ cứng)
    Mã:
    sudo fallocate -l 8G /swapfile

    Sau đó xác nhận bằng
    Mã:
    ls -lh /swapfile

    Terminal trả lại kết quả

    Kích hoạt swap
    Mã:
    sudo chmod 600 /swapfile

    Xác nhận lại bằng
    Mã:
    ls -lh /swapfile

    Terminal trả lại kết quả

    Rồi,bây giờ bắt Ubuntu nó tạo không gian swap
    Mã:
    sudo mkswap /swapfile

    Terminal sẽ trả lại kết quả (Nhìn giống vậy là được, chứ mỗi máy khác nhau)
    Kích hoạt lại cho chắc ăn
    Mã:
    sudo swapon /swapfile

    Bây giờ xem vùng swap đã được đưa vào chạy chưa
    Mã:
    sudo swapon -s

    Nếu ngon,terminal sẽ trả lại
    Tiếp theo mình check coi ram với swap chạy song song ngon chưa
    Mã:
    free -m

    Đây là kết quả của mình
    Mã:
                total       used       free     shared    buffers     cached
    Mã:
    
    
    Mã:
    
    
    Mã:
    
    
    Mã:
    
    
    Mã:
    
    
    Mã:
    [/COLOR][/FONT][/SIZE][/FONT][/SIZE][/FONT]
    
    Mem:          32953        101       32852          0          5         30
    -/+ buffers/cache:         66       3887
    Swap:         8190          0       4095

    Nếu đã hiện thông số swap là chúng ta thành công một phần rồi.
    Tiếp đây là bước quan trọng, để cho swap không mất đi khi chúng ta reset máy
    Mã:
    sudo nano /etc/fstab

    Terminal sẽ mở ra một cửa sổ gedit (text edit) các bạn copy dòng dưới đây dùng phím điều hướng đưa trỏ chuột xuống dưới cùng và paste ra.
    Mã:
    /swapfile   none    swap    sw    0   0

    Sau đó theo trình tự Ctrl + X rồi Y và Enter để hoàn thành edit file đó và lưu lại.
    Tiếp tục một vài bước nữa
    Mã:
    sudo nano /etc/sysctl.conf

    các bạn làm tương tự như trên copy dòng dưới,paste dưới cùng,ctrl +x sau đó Y và enter.
    Mã:
    vm.swappiness=10

    Code cuối cùng
    Mã:
    sudo nano /etc/sysctl.conf

    Copy dòng dưới cho vào cuối trang, làm các bước lưu và thoát như trên
    Mã:
    vm.vfs_cache_pressure = 50

    Done :D
    Vậy là chúng ta đã hoàn tất swap trên Ubuntu,chúc các bạn thành công !
     
    Last edited by a moderator: 10/3/17
    4 Peoples like this
  • Categories: Uncategorized

Bình luận

Thảo luận trong 'Hướng dẫn chung' bắt đầu bởi nthoa.it, 24/5/16.

  1. Minh Khơi
    Giả sử muốn build máy mà RR chưa có trong danh sách thì làm sao bạn. Sync source xong rồi ko biết làm gì tiếp theo
  2. Nguyễn Xuân Phương
    hi các bạn, mình đang dùng 1 con htc one m9,đang bị lỗi boomsound mà k biết khắc phục sao, nếu bạn nào biết chỉ giúp mình 1 cách chi tiết, mình k rành về IT. mọi hõ trợ xin gửi về mail: phuong.nx1980@gmail.com hoặc 0906377422 Mr Phương. Chân thành cảm ơn các bạn
  3. tathanhlam66
    máy bác mà dc cyanogenmod hỗ trợ thì đơn giản, lên trang https://github.com/cyanogenmod
    tải về device tree, vendor và kernel cho đt bạn, dùng lệnh git clone về.
    nếu bác không biết device tree thì bác tìm file cm.dependencies ra sẽ hiểu.
    p/s: quên không nói, bác so sánh với device tree rom RR hỗ trợ để sửa file cm.mk để chỉnh đường dẫn vendor, config mới build dc.
    máy bác không được cyanogne mod hỗ trợ có device tree thì còn khó hơn :D
  4. Tinh Huynh
    chỗ kéo source về (repo sync -f) thì bị lỗi này, anh em nào biết fix không? o_O [​IMG]
  5. Nguyen Quoc Hung
    may anh chi em cach sửa file cm.mk để chỉnh đường dẫn vendor, config cho zenfone 5 de build Hexagon di
  6. PhuocBull
    Cái này là do bọn mình đang gặp một số vấn đề với github,hiện tại gán repo sẽ lỗi, nên bước này sẽ như vậy, team sẽ fix nhanh trong thời gian ngắn nhất ;)
  7. bophungdat
    mình làm tới đây sao nó lại báo là ko tìm thấy thiết bị Sky A910 (ef63l)


    Screenshot from 2016-10-09 04-54-59.png
  8. bophungdat
    cho mình hỏi làm sao để xóa hết 1 source vừa tải vậy
  9. dunganh
    neu may minh chua duoc ho tro thi build nhu nao vay ad?
    thanks ad truoc nhe :)
  10. PhuocBull
    Sky a910 ef63l phải add device thủ công nha bạn
    Bạn chỉ cần xóa thư mục mà bạn tạo thôi tức là thư mục sau lệnh "mkdir" ở bước thiết lập ban đầu, bạn có thể tìm thấy thư mục này bằng cách mở file manager, mục Home
    Bài hướng dẫn build máy ko có trong list hỗ trợ sẽ được cập nhật sau !
  11. tin
    Mình làm như trên nhưng mình muốn build 1 rom khác không phải là Hexagon liệu có thành công

Chia sẻ trang này

Share