Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 5 123 ... CuốiCuối
Kết quả 1 đến 10 của 50
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Hướng dẫn lập trình Android với Android x86 trên Virtualbox [Tutorial dành cho máy cấu hình yếu]

    Update cách làm mì ăn liền hơn.
    Đây là bản Android đã cài đặt trên máy mình với đủ setting. Bạn import vào VirtualBox (double click) là chạy được ngay [IMG]images/smilies/biggrin.png[/IMG]
    https://www.sugarsync.com/pf/D6597612_86853476_687578

    Tạm thời chưa có link mediafire nhé [IMG]images/smilies/biggrin.png[/IMG]

    Đã update cách config với NAT, dễ dàng và hiệu quả hơn
    ================================================== =======================

    Chào các bạn!

    Hôm nay Wazi sẽ hướng dẫn các bạn cài đặt android x86 (bản android chạy trên nền tảng x86) trên VirtualBox để lập trình dành cho các máy có cấu hình yếu [IMG]images/smilies/2.gif[/IMG]

    Why androidx86?

    Như các bạn đã biết, đi kèm với bộ công cụ phát triển Android (SDK) là Android Emulator để giả lập một thiết bị android. Phần mềm này thường khởi động khá là chậm và khi chạy tốn khá nhiều tài nguyên + delay, cảm giác khá là nặng nề. Nguyên nhân điều này là do nó giả lập một bộ xử lí ARM trên CPU và chạy Android OS thông qua đó thay vì tương tác trực tiếp giữa CPU với Android OS.
    Và Android x86 đã giải quyết được vấn đề trên bằng việc sử dụng kiến trúc x86. (Văn chương Wazi hơi chán nói được vậy thôi [IMG]images/smilies/mad.png[/IMG])

    Action

    Step 1: Download

    Đầu tiên lúc nào cũng là download. Bạn vào trang sau: android-x86.org/download

    Wazi khuyến khích các bạn sử dụng bản android-x86-2.x-RC1-eeepc.iso, 2.x là 2.2 hoặc 2.3 (Đơn giản là vì Wazi đã test nhiều lần, và nó cũng là bản android phổ biến hiện nay)
    Tiếp theo, bạn download VirtualBox (cái này thì tự google nhé)
    Download xong nhảy sang step2

    Step 2: Setup


    1. Cài đặt VirtualBox (dễ như ăn kẹo nên thôi ko có SS nhé)
    2. Cài đặt Androidx86:

    2.a Tạo mới (Bạn nào đã quen thuộc với Virtualbox có thể nhảy sang qua 2.b)

    - Đầu tiên bạn khởi động Virtualbox và chọn New để tạo mới. Điền tên cho nó. Chọn OS là Linux, version là Linux 2.6 (cái version này cũng ko quan trọng lắm thì phải) rồi Next.


    - Dung lượng RAM cơ bản để 256MB -> Next
    - Đến phần Virtual Hard Disk bạn có thể chọn Create New hoặc sử dụng một đĩa ảo sẵn có. Ở đây Wazi giả định là tạo mới. -> Next
    - Cửa sổ Virtual Hard Disk Creation Wizard hiện ra, chọn VDI -> Next
    - Chọn Fixed Size -> Next. Điền dung lượng đĩa ảo này (2GB là đủ) và nơi lưu trữ nó bằng cách bấm vào hình folder ở khung Location (trong trường hợp bạn không muốn lưu nó ở vị trí mặc định). Xong bấm Next-> Create và chờ cho nó tạo đĩa


    - Bấm Create lần nữa để nó hoàn tất việc tạo máy ảo này.
    - Sau khi tạo xong máy ảo, vào Setting -> Storage->Ở phần IDE Controller bấm vào hình cái đĩa có dấu cộng -> Hộp thoại hiện ra -> Chọn Choose Disk rồi Browse đến cái file Androidx86… .iso vừa mới download ở trên.


    - Qua bước 2.b

    2.b Cài đặt Android x86

    - Khởi động máy ảo vừa tạo bằng cách bấm Start. Menu Boot hiện ra chọn Install android x86 to hard disk


    - Tiếp theo chọn Create/Modify Partition
    - Sử dụng các phím mũi tên chọn New -> Primary -> Điền size vào (thường nó đã điền sẵn cho maximum size rồi) -> Enter
    - Chọn Bootable (Sau khi chọn thì cột Flags có chữ Boot) sau đó dùng mũi tên (trái và phải) di chuyển đến Write -> Enter. Gõ “yes” vào để xác nhận


    - Chờ nó write xong thì di chuyển mũi tên đến chữ Quit và Enter
    - Hộp thoại Choose Partition hiện ra, chọn partition vừa tạo (sda1). Nó hỏi format thì chọn ext3 rồi OK
    - Mấy cái sau OK hết (install GRUB, /system directory)
    - Chờ nó cài xong thì chọn Create Fake SD Card, điền size tùy thích (khoảng 64MB chẳng hạn)
    - Xong Reboot và Tắt luôn cái máy ảo đi (Mục đích là dừng nó lại để rút cái đĩa ISO ra)
    - Vào Setting -> Storage -> Chọn đĩa ISO lúc nãy mount vào, nhấn dấu trừ để remove nó ra.
    - Vẫn trong Setting, vào Network Chọn Adapter1 thiết lập như sau


    Có thể chọn mục Attach to là Host Only Adapter hoặc Brigde Adapter đều được, nhưng Brigde yêu cầu bạn phải có 1 DHCP server để cấp IP cho cái máy ảo này (đại khái là bạn phải đang nối internet, đổi lại là với lựa chọn này bạn sẽ vào được internet trong androidx86)
    - Xong OK và khởi động vào Androidx86 vừa cài đặt.

    2.c Sử dụng

    - Bấm Ctrl (bên phải) + I để chọn chức năng Mouse Integration (để sử dụng chuột trong máy ảo)
    - Trong khi bạn bấm chuột vào màn hình lần đầu sử dụng Virtual Box sẽ có một số thông báo. Cứ OK + Don’t Show Again (sau vọc dần biết hết mà)
    - Để thoát chuột khỏi màn hình bấm Ctrl (bên phải) (Tiện đây nói thêm, phím Ctrl phải mặc định là phím chức năng của máy ảo, các chức năng liên quan đều kết hợp với phím này)
    - Right Ctrl + C: chuyển qua chế độ Scale.


    Step 3: Kết nối với máy ảo để lập trình

    Các bạn xem update bên dưới cuối bài viết để có được những lựa chọn cách làm dễ dàng hơn
    - Trong khi đang dùng máy ảo, nhấn Left Alt +F1 để chuyển sang chế độ console (Left Alt + F7 để trở về màn hình bình thường)
    - Gõ lệnh netcfg để tìm IP của máy ảo


    - IP của nó trong trường hợp này là (eth0) 192.168.1.33
    - Tiếp theo là kết nối với máy ảo bằng adb tool trong bộ SDK của Android
    - Mở cmd trong Windows, vào thư mục %ANDROID_HOME%\android-sdk\platform-tools trong đó %ANDROID_HOME% là thư mục cài Android SDK (Ví dụ: D:\Program Files\Android\android-sdk\platform-tools) gõ
    Mã:
    adb connect IP
    trong đó IP là ip máy ảo vừa lấy lúc nãy. Sau khi thấy thông báo connected to… là bạn đã connect thành công.
    - Để test, bật Eclipse lên và Run thử


    - Đến đây coi như bạn đã thành công rồi!

    Step 4: Nâng cao: Chỉnh độ phân giải cho máy ảo androidx86

    - Như các bạn thấy trong hình trên máy ảo android của Wazi có tỉ lệ màn hình trông giống cái điện thoại chút (Portrait) trong khi của các bạn khi cài ra lại vuông vuông (4:3) chẳng giống ai [IMG]images/smilies/11.gif[/IMG].
    - Cách chính như sau (Đã biết dung vi là một lợi thế) [IMG]images/smilies/kiss.gif[/IMG]
    - Trước tiên là set custom resolution cho VirtualBox. Mở cmd tìm đến thư mục cài VirtualBox (VD: D:\Program Files\Oracle\VirtualBox) rồi điền vào câu lệnh dạng sau

    Mã:
    VBoxManage setextradata "Androidx86" "CustomVideoMode1" "640x960x16"
    Trong đó Androidx86 là tên máy ảo của bạn. Bạn có thể thêm nhiều CustomVideoModel khác nhau (nhớ điền tên khác nhé)
    - Tiếp theo là thêm menu với độ phân giải ở trên vào Grub của androidx86
    - Khởi động androidx86, vào ở Menu Boot, chọn chế độ Debug
    - Gõ lần lượt những command sau

    -
    Mã:
    mount –o remount,rw /mnt
    	vi /mnt/grub/menu.lst
    - Trình soạn thảo vi hiện ra như sau


    - Phần việc tiếp theo là tạo mới một lựa chọn Boot và thêm vào đó độ phân giải lúc nãy bằng cách thêm vào kernel option lựa chọn: UVESA_MODE=”640x960” (640x960 là độ phân giải vừa ở trên)
    1. Di chuyển con trỏ đến chữ title đầu tiên rồi nhấn lần lượt 3 và Shift+y (mục đích là copy 3 dòng cùa menu đầu để paste xuông dưới cho đỡ phải gõ lại)
    2. Di chuyển con trỏ xuống cuối file và nhấn p. Nó sẽ paste 3 dòng vừa copy
    3. Nhấn a để vào chế độ edit, di chuyển con trỏ đến title của đoạn vừa paste để sửa lại title cho nó (cho khỏi lộn, chứ dòng này ko quan trọng lắm) Tiếp theo di chuyển đến dòng kernel, gõ thêm UVESA_MODE=”640x960” vào, đại khái nó ra như sau
    Mã:
     …. acpi_sleep=s3_bios,s3_mode DPI=240 UVESA_MODE=480x720 SRC=/android-2.3-RC1…
    Bạn có thể di chuyển con trỏ đến chỗ default để chỉnh boot mặc định vào menu này (các menu đánh số từ 0)
    4. Nhấn Esc để thoát chế độ Edit
    5. Nhấn :wq để write and quite (ko write là ko có gì đâu)
    6. Reboot máy ảo và tận hưởng (Để màn hình chế độ Scale bằng Cách nhấn Right ctrl + C)

    <font size="4">Kết:

    Toàn bộ tutorial được viết bởi Wazi Armstrong@diendan.congdongcviet.com sau khi thao khảo nhiều bài viết trên mạng trong đó chủ yếu là bài viết này dev.blogs.nuxeo.com/2011/10/speeding-up-the-android-emulator.html

    Bonus: So sánh tốc độ giữa androidx86, android emulator và nexus one


    Thân ái!
    Wazi Armstrong


    PS: Bạn có thể download file đính kèm tutorial.zip để đọc offline (yêu cầu có M$ Word 2007 trở lên)

    ================================UPDATE============ =======================


    Ở bước 2.b ở trên khi bạn chọn card mạng cho Android thì có 2 lựa chọn là Host Only hoặc Bridge. Host Only thì lại không vào được internet trong khi đó Bridge thì lại yêu cầu phải có DHCP Server (bất tiện khi một số mạng như công ty mình DHCP server nó cấp IP theo địa chỉ MAC chứ không cấp bừa bãi)

    Vì thế mình đã tìm ra 1 cách giải quyết tối ưu (theo mình là tốt nhất)
    Bạn chọn card mạng là NAT. Với lựa chọn này thì bạn có thể vào internet mà không cần DHCP server
    Tuy nhiên adb lại không connect được (mặc dù netcfg vẫn hiện ip là 10.0.2.15)
    Mình đã tìm hiểu và biết rằng với lựa chọn NAT, Android sẽ kết nối với bên ngoài thông qua máy tính của mình như 1 router. Trong khi đó adb làm việc ở port 5555, 5554 nên nó không thể thấy máy mình được. Đến đây chắc các bạn cũng hiểu mình nói gì [IMG]images/smilies/smile.png[/IMG]
    Dùng câu lệnh port forwarding của virtualbox
    Mã:
    VBoxManage modifyvm "AndroidVM" --natpf<1-N> [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>
    Giải thích một chút AndroidVM là tên máy ảo android của mình
    <1-N> là số thứ tự của card mạng (nếu bạn chọn cái NAT đó ở cái tab Adapter thứ nhất thì điền 1)
    <name>, cái này tùy chọn, là tên của cái port forwarding này
    giao thức chọn là tcp nhé
    hostip, hostport, guestport, guestip thì thôi ko cần giải thích, trong đó hostip với guestip là tùy chọn
    Vậy với trường hợp của mình thì câu lệnh đại khái là
    Mã:
    VBoxManage modifyvm "AndroidVM" --natpf1 "adb, tcp,,5555,,5555"
    nhớ là số 1 viết liền sau natpf và tham số sau đó phải cho vào "". Chỉ vì mình thiếu ngoặc kép (hướng dẫn nó ko nói ) làm mò mãi mới xong

    Rồi, giờ bật Virtualbox lên, khởi động Android (có thể tường lửa sẽ hỏi, vì động đến port mà, cứ allow thôi)
    Sau đó thì bật cmd lên gõ
    Mã:
    adb connect localhost
    (Thực ra thì trên cả 2 máy tính của mình đều không cần phải gõ dòng này, bật eclipse lên, bật máy ảo lên là nó tự nhận luôn, run được luôn)
    Thế là xong!

    Với cách làm này các bạn còn có thể test các ứng dụng web chạy trên máy tính của mình (localhost) bằng việc kết nối qua địa chỉ http://10.0.2.2/ ở trong Android mà không cần phải deploy lên server thật, vừa mất thời gian vừa chậm.
    Ví dụ trên máy tính của bạn, địa chỉ cái web bạn đang phát triển là http://localhost/Hello/index.html thì trong máy ảo Android địa chỉ đó sẽ là http://10.0.2.2/Hello/index.html

    Chúc các bạn thành công!

    <font color="Red">================================UPDATE ============ =======================


    Update nhanh phát. Tình hình là có 1 số laptop không dùng NAT được. Đành phải quay lại dùng Bridge với config như sau. (Đang vội chỉ viết đc vậy thôi)



    ================================UPDATE============ =======================

    Trích dẫn Gửi bởi elliwood
    Mình tìm được cách giải quyết rồi.
    Chia sẻ với mọi người.
    Nếu trên android 3.2 hoặc 4.0 mà không kết nối internet được thì dùng cách này.

    Mã:
    attached to: NAT
    PCnet-Fast III
    press alt-f1
    type dhcpcd eth0
    type setprop net.dns1 [your DNS for your internet provider] mine is 75.75.75.75
    press alt-f7 to go back to GUI
    </font></font>

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mấy nút Gọi, Soft Menu, Enter, Left, Right... trên máy android thật thì mapping trong cái android emulator này ntn vậy ông anh?

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi DingPhonh
    Mấy nút Gọi, Soft Menu, Enter, Left, Right... trên máy android thật thì mapping trong cái android emulator này ntn vậy ông anh?
    Chức năng cao cấp như truy cập webcam (ko rõ cái này có không) hay gọi... thì làm sao máy ảo làm được, kể cả access android market [IMG]images/smilies/dont_know.gif[/IMG]
    Những cái này có lẽ nên dùng máy thật test.
    Cái máy ảo này hữu dụng cho test những module thông thương như logic, layout, test game, hay web... đảm bảo nhanh hơn nhiều lần. [IMG]images/smilies/kiss.gif[/IMG]

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Emulator vẫn dùng để chụp ảnh, nghe audio ( không record audio) được. Ngoại trừ mấy tính năng cao cấp như Sensor,... thì Emulator đều làm được ( Send SMS giữa 2 emulator, lướt web).

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    E vào trang này: developer.android.com/guide/topics/media/camera.html

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi snake_programmer
    Emulator vẫn dùng để chụp ảnh, nghe audio ( không record audio) được. Ngoại trừ mấy tính năng cao cấp như Sensor,... thì Emulator đều làm được ( Send SMS giữa 2 emulator, lướt web).
    Không biết anh có thể hướng dẫn em làm thế nào để chụp ảnh và record được không ạ.
    Em dùng SDK của google nhưng không truy cập wedcam được, còn record thì lúc được lúc không
    Cảm ơn anh trước [IMG]images/smilies/biggrin.png[/IMG]

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Em gặp trường hợp như sau:
    Em cài 2 bản android 2.2 và 4.0. Sau khi config network thành dhcp và truy cập đc Internet. Nhưng lại bị 1 vấn đề:
    sau khi reboot
    Android 2.2: thì ok(ko bị thay đồi, vẫn là dhcp và vào internet bình thường)
    Android 4.0: bị reset về mặc định 0.0.0.0

    Có cách nào để cho nó ko bị reset ko ạ. Bởi vì mỗi lần mở lên lại phải config + kết nối adb rất tốn thời gian
    Chân thành cám ơn!

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Android 4.0 mình chưa có cơ hội test.
    Còn vụ adb thì đúng thế. Bạn tắt thiết bị đi rồi thì nó mất kết nối là đương nhiên => Phải kết nối lại
    Gợi ý cách làm của mình:
    Do nhà mình đặt IP tĩnh nên IP của cái máy ảo đó lúc nào cũng cố định (của mình là 192.168.1.33, nếu bật 2 cái liền thì cái kia là 34, 35...)
    Tạo một file bat với dòng lệnh

    adb connect 192.168.1.33
    rồi lưu nó vào chỗ nào đó. Khởi động android lên rồi chạy file này là ok. (Có điều phải thêm thư mục chứa adb.exe vào path trong Environment Variable trước, không thì bạn phải chỉ ra đường dẫn chính xác của adb trong câu lệnh trên)
    Với lại mình ít khi reboot android trong khi làm việc, không rõ có lí do gì mà bạn phải reboot vậy [IMG]images/smilies/smile.png[/IMG]

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Tại vì mình muốn ngày mai mở lên chỉ chạy file .bat kia thôi!
    Khi mình tắt android đi thì nó reset hết IP(dù mình có đặt tĩnh hay động thì cũng thế).

    ps: Làm android trên virtualbox mà

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    vừa thử chạy android 4.0 thì kết quả không nhận chuột [IMG]images/smilies/biggrin.png[/IMG].

 

 
Trang 1 của 5 123 ... CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •