Làm cách nào để khởi chạy trình giả lập Android từ dòng lệnh?


373

Tôi đang dùng Mac, đang phát triển Android từ thiết bị đầu cuối. Tôi đã tạo thành công dự án HelloWorld và bây giờ tôi đang cố chạy nó từ dòng lệnh trong trình giả lập Android. Lệnh nào chạy trình giả lập cho dự án HelloWorld của tôi?

Tôi đã có các công cụ Android và công cụ nền tảng trong PATH của mình.

Biên tập:

Làm cách nào để bảo trình giả lập chạy dự án HelloWorld của tôi từ dòng lệnh? Tôi đã xây dựng dự án với kiến.


Tài liệu liên quan: tạo với avdmanagervà khởi chạy với emulator.
jchook

Câu trả lời:


380

Tôi giả định rằng bạn đã xây dựng dự án của mình và chỉ cần khởi chạy nó, nhưng bạn không có bất kỳ AVD nào được tạo và phải sử dụng dòng lệnh cho tất cả các hành động. Bạn phải làm như sau.

  1. Tạo một thiết bị ảo mới (AVD) cho nền tảng bạn cần. Nếu bạn phải sử dụng dòng lệnh để tạo AVD của mình, bạn có thể gọi android create avd -n <name> -t <targetID>nơi targetID là cấp API bạn cần. Nếu bạn có thể sử dụng GUI, chỉ cần nhập android avdvà nó sẽ khởi chạy trình quản lý, nơi bạn có thể làm tương tự. Bạn có thể đọc thêm về quản lý AVD thông qua GUIthông qua dòng lệnh .
  2. Chạy AVD bằng cách sử dụng lệnh emulator -avd <name>hoặc thông qua GUI đã khởi chạy trước đó. Đợi cho đến khi trình giả lập tải đầy đủ, phải mất một thời gian. Bạn có thể đọc về các tùy chọn bổ sung ở đây .
  3. Bây giờ bạn phải cài đặt ứng dụng cho AVD của bạn. Thông thường trong quá trình phát triển, bạn chỉ cần sử dụng cùng một tập lệnh Ant bạn đã sử dụng để xây dựng dự án, chỉ cần chọn installmục tiêu. Tuy nhiên, bạn có thể cài đặt ứng dụng bằng tay bằng cách sử dụng lệnh adb install <path-to-your-APK>.
  4. Bây giờ chuyển sang trình giả lập và khởi chạy ứng dụng của bạn như trên bất kỳ thiết bị bình thường nào, thông qua trình khởi chạy. Hoặc, thay thế, bạn có thể sử dụng lệnh sau : adb shell am start -a android.intent.action.MAIN -n <package>/<activity class>. Ví dụ : adb shell am start -a android.intent.action.MAIN -n org.sample.helloworld/org.sample.helloworld.HelloWorld. Như một bình luận đã đề xuất, bạn cũng có thể thay thế org.sample.helloworld.HelloWorldtrong dòng trên bằng chỉ .HelloWorldvà nó cũng sẽ hoạt động.

1
Danh sách 4 điểm của bạn là những gì tôi đang tìm kiếm. Khi tôi chạy adb install <path-to-your-APK>, tôi nhận được error: device not found. Nếu tôi chạy trình giả lập trong một trình bao và lệnh cài đặt adb trong một trình bao khác, tôi nhận được error: device offline. Làm cách nào để đặt thiết bị ảo giả lập?
Thierry Lam

3
OK, mang lại thông tin từ phiên bản trước của câu trả lời. :) Nếu bạn nhận được thông báo rằng thiết bị đang ngoại tuyến, tôi nghĩ rằng bạn chưa để hệ thống tải. Sẽ vô ích khi thử gửi lệnh đến trình giả lập khi nó hiển thị logo Android, bạn phải đợi cho đến khi nó hiển thị cho bạn màn hình khóa. Và bạn đã đúng rằng bạn phải sử dụng một thể hiện shell khác để gửi lệnh đến thiết bị của mình. Nhân tiện, bạn có thể kiểm tra trạng thái hiện tại của thiết bị bằng cách sử dụng adb deviceslệnh.
Malcolm

1
@ThomasW Cảm ơn, tôi đã thêm thông tin này vào câu trả lời.
Malcolm

1
@ L2G Nếu bạn chạy nó dưới dạng một tập lệnh, thì có, bạn có thể làm điều đó. Khi tôi viết câu trả lời, tôi giả sử bạn làm mọi thứ bằng tay, trong trường hợp đó, tất nhiên, bạn có thể tự chờ đợi.
Malcolm

4
khởi động lại adb-server bằng cách: adb kill-server; adb start-servernếu không có gì xuất hiện trênadb devices
evandrix

278

Liệt kê tất cả các trình giả lập của bạn:

emulator -list-avds

Chạy một trong các trình giả lập được liệt kê với -avdcờ:

emulator -avd @name-of-your-emulator

ở đâu emulatordưới:

${ANDROID_SDK}/tools/emulator

2
Nếu bạn chạy từ thiết bị đầu cuối Linux, bạn phải cdvào thư mục $ ANDROID_SDK / tools nếu không nó sẽ không hoạt động.
shimatai

4
Cảm ơn! Nếu bạn sử dụng emulatorthường xuyên hơn tại sao không tạo bí danh: nano ~/.bashrc> thêm alias emulator='$ANDROID_HOME/tools/emulator', lưu . ~/bashrcvà bạn đã hoàn thành. (thay thế ANDROID_HOMEbằng biến chính xác được sử dụng hoặc đường dẫn tĩnh đến thư mục Android).
Samuel Elh

3
Nếu lỗi sau đây được nêu ra: ERROR: ./ android / qt / qt_setup.cpp: 28: Không tìm thấy thư viện Qt tại ../emulator/lib64/qt/lib, bắt đầu trình giả lập từ $ ANDROID_HOME / tools là một cách giải quyết. github.com/decosoftware/deco-ide/issues/289
tebanep

Nếu bạn thực sự không điều hướng đến toolsthư mục - nó thực sự sẽ không hoạt động. Tôi đã có lỗi PANIC: Missing emulator engine program for 'x86' CPU.. (Tôi đang dùng Linux, OpenSUSE.) Sau khi tôi điều hướng toolsvà sau đó mới chạy emulator -avd "{name}"- thì nó đã hoạt động.
pesho hristov

100

Tôi nghĩ rằng cách tốt nhất để tiếp cận nó thông qua thiết bị đầu cuối là:

cd ~/Library/Android/sdk/tools

Để chạy một AVD nhất định trực tiếp:

./emulator -avd {AVD_NAME}

Để liệt kê AVD của bạn, hãy sử dụng:

./emulator -list-avds

Đường dẫn cho Windows là gì?
qwertzguy

9
Ah tìm thấy nó: C: \ Users \ <user> \ AppData \ Local \ Android \ sdk \ giả lập
qwertzguy

1
chỉ có một công việc cho tôi, thx - nhưng dù sao cũng có thể thêm nó vào đường dẫn của bạn hoặc smc bc cd'ing ở đó mọi lúc mọi nơi là một rắc rối
John D

Những gì @JohnD đã nói - làm thế nào tôi có thể đưa ./một phần của emulatorlệnh vào một đường dẫn / bí danh?
DaveNOTDavid

Trong Linux, con đường đối với tôi là ~/Android/Sdk/emulator.
Tyler Collier

26

Chỉ cần thêm vào đây, bất cứ khi nào bạn gặp "lỗi: thiết bị ngoại tuyến" có nghĩa là kết nối với trình giả lập & cầu adb đã bị hỏng do thời gian khởi động trình giả lập.

Thay vì bắt đầu lại trình giả lập tại thời điểm này, hãy thử bên dưới hai lệnh dừng và bắt đầu lại cầu adb.

máy chủ tiêu diệt adb

máy chủ khởi động adb


Trong Windows, bạn cũng có thể cần phải hủy tác vụ adb.exe bằng Trình quản lý tác vụ.
Carl

25

Tại đây bạn có thể kiểm tra các tùy chọn để thực hiện lệnh này thông qua dòng lệnh:

emulator -avd avd_name [-option [value]] ... [-qemu args]

Ví dụ, tôi sử dụng nó như thế này dưới đây:

emulator -avd ICS_ARM -wipe-data -no-boot-anim -cpu-delay 0

Hi mầmangti, tôi có cùng một vấn đề. Tôi đang nhận được "ABI hợp lệ: không có ABI. Lỗi: Không hợp lệ --abi x86 cho mục tiêu đã chọn." Làm thế nào bạn đã khắc phục vấn đề?
Muneer Muhammed

15

mở CMD

  1. Dấu nhắc mở
  2. gõ đường dẫn giả lập trong trường hợp của tôi

C: \ adt-bundle-windows-x86_64-20140702 \ sdk \ tools nhập mô tả hình ảnh ở đây

  1. viết "trình giả lập -avd emulatorname" trong trường hợp của tôi

trình giả lập -avd AdilVD

nhập mô tả hình ảnh ở đây


13

Nếu bạn đang cố gắng chạy trình giả lập từ dòng lệnh, hãy thử điều này trong OSX.

"/Applications/Android Studio.app/sdk/tools/emulator" -avd <NAMEOFDEVICE> -netspeed full -netdelay none

Bạn có thể đơn giản hóa nó bằng cách thêm bí danh vào .bash_profile và gửi nó đến một công việc nền.

alias android='/Applications/Android\ Studio.app/sdk/tools/emulator <NAMEOFDEVICE> -netspeed full -netdelay none &'

Hãy để Bash biết về những thay đổi.

source ~/.bash_profile

zsh: không có tập tin hoặc thư mục như vậy: NAMEOFDEVICE
Ben Sinclair

2
@Andy bạn phải thay thế NAMEOFDEVICEbằng tên thật của trình giả lập. làm một emulator -list-avdsđể có được một danh sách các avds mà bạn có trong hệ thống của bạn.
nabn

9

Mở dấu nhắc lệnh và đi đến <android-Home>\sdk\tools>emulator -avd <AVD_NAME>

Đây "emulator"là lệnh được sử dụng để mở Thiết bị ảo Android của bạn .


9

Nếu bạn có Git Bash, bạn có thể mở trình giả lập bằng cách nhấp đúp, với một số thiết lập ban đầu (chỉ được thử nghiệm trong Windows 10) :

  1. Mở Git Bash.
  2. Chạy cd ~/AppData/Local/Android/sdk/emulator
  3. Chạy ./emulator -list-avdsvà ghi chú tên của trình giả lập. MY_EMULATORví dụ.
  4. Mở Notepad và thêm hai dòng này (chèn tên trình giả lập của bạn thay vì MY_EMULATOR):

    cd ~/AppData/Local/Android/sdk/emulator; ./emulator -avd MY_EMULATOR

  5. Lưu tập tin ở đâu đó thuận tiện như myfile. sh . Bạn có thể thay đổi "myfile" phù hợp nhất với mình, nhưng phần mở rộng .sh là cần thiết.

  6. Mở Git Bash tại thư mục nơi bạn lưu trữ myfile.sh và chạy chmod +x myfile.sh. Hãy nhớ đặt tên tệp của bạn thay vì myfile .

Và đó là nó! Từ giờ trở đi, bất cứ khi nào bạn cần khởi động trình giả lập đó, chỉ cần xác định vị trí myfile.sh của bạn và nhấp đúp vào nó và chờ trình giả lập Android của bạn khởi chạy!


5

(Linux) Trong thiết bị đầu cuối của bạn Sao chép & Dán và thay đổi ba trường màu xanh lam

/home/YouUser/Folder/adt-bundle-linux-x86_64-20140702/sdk/tools/emulator64-x86 -avd Android5.1.1

YouUser = user of session in linux
Folder = path of folfer
Android5.1.1 = You version of android in the emulator,for example (Android4.4.2)

bạn có thể xem trình giả lập trong thư mục nhà cd /home/Youuser/.android/avd/


5

Các android create avdlệnh bị phản đối. Bây giờ nên sử dụng avdmanagerthay thế để khởi chạy trình giả lập từ dòng lệnh.

Đầu tiên, tạo một trình giả lập mới nếu nó chưa tồn tại:

avdmanager create avd --name "MyEmulator" -k "system-images;android-
26;google_apis;x86"

Điều này giả định rằng bạn đã cài đặt hình ảnh hệ thống X86 phù hợp với API 26 và đã cài đặt API Google.

Sau đó bạn có thể khởi chạy trình giả lập với emulator @MyEmulator.


4

Ngày nay, khi bạn cài đặt Android Studio (2.2) trong trường hợp của tôi và chỉ cần 1 trình giả lập, bạn có thể sử dụng một lớp lót này

export ANDROID_SDK_ROOT=~/Library/Android/sdk/ && emulator '@'`emulator -list-avds`

Nếu bạn làm điều này thường xuyên, làm cho nó dễ dàng hơn:

$ echo 'export ANDROID_SDK_ROOT=~/Library/Android/sdk/' >> ~/.profile

Thêm một bí danh để ~.aliases

alias androidup="emulator '@'`emulator -list-avds`" 

Nhớ lại source ~/.profile ~/.aliasestrước khi thử nghiệm nó

Lần sau chỉ $ androidup


3

danh sách tên avd có sẵn trên

.android / avd

/ SDK_PATH / công cụ / trình giả lập -netdelay none -netspeed full -avd "AVD_NAME"


3

Trong windows, tôi sử dụng tập lệnh PowerShell này để khởi động nó.

$em = $env:USERPROFILE+"\AppData\Local\Android\sdk\tools\emulator.exe"; 
Start-Process $em " -avd Nexus_5X_API_24" -WindowStyle Hidden;

3
  1. Mở CMD
  2. Để nhận tất cả danh sách Trình giả lập (C: \ Users \ DJango \ AppData \ Local \ Android \ sdk \ giả lập> trình giả lập -list-avds)
  3. Chọn bất kỳ trình giả lập nào (C: \ Users \ DJango \ AppData \ Local \ Android \ sdk \ giả lập> trình giả lập -avd Pixel_2_API_28)

1

Trên Mac (và Linux tôi nghĩ), sau khi bạn đã tạo AVD, bạn có thể tạo bí danh: alias run-android='~/Library/Android/sdk/tools/emulator -avd ${YOUR_AVD_NAME} &'

Lưu ý : việc thực hiện bí danh sẽ không khóa thiết bị đầu cuối của bạn, nếu bạn muốn điều đó, chỉ cần xóa '&' cuối cùng .

Tự chạy emulatornó sẽ cung cấp cho bạn một lỗi vì anh ta hy vọng rằng, ở vị trí hiện tại của bạn, bạn có: /emulator/qemu/${YOUR_PATFORM}/qemu-system-x86_64'để bắt đầu trình giả lập.


1

Tôi đã viết kịch bản shell đơn giản này bằng Zenity cho phép bạn chọn avd nào bạn muốn chạy. Nếu bạn chưa xác định ANDROID_HOME, bạn chỉ có thể thay thế bằng đường dẫn đầy đủ đến trình giả lập. Điều này cũng dễ thực hiện với select thay vì Zenity, nhưng tôi đã chọn Zenity vì tôi đang chạy nó từ menu ứng dụng xfce (mặc dù là tệp .desktop).

#!/bin/sh

opt=$(zenity --title="Choose AVD" --text="Choose which emulator to start" --list \
                   --column="Devices" --separator="\n" `$ANDROID_HOME/emulator/emulator -list-avds`);

$ANDROID_HOME/emulator/emulator -avd $opt

1

Chạy trình giả lập đầu tiên có sẵn:

~/Library/Android/sdk/tools/emulator -avd `~/Library/Android/sdk/tools/emulator -list-avds | awk '{print $1}'`

Tôi làm một cái gì đó tương tự:~/Library/Android/sdk/tools/emulator -avd $(~/Library/Android/sdk/tools/emulator -list-avds | head -1)
Kamen Tsvetkov

1

Tôi đến trễ, ở đây nhưng muốn chia sẻ vì vậy có thể nó sẽ giúp được ai đó và tôi cũng vậy khi cần sau này :), vì vậy, dưới đây là cách để mở trình giả lập từ dòng lệnh bằng một lệnh sử dụng tập lệnh bash. Tôi đang sử dụng MX Linux nhưng quá trình này giống nhau trên tất cả các hệ điều hành

1- Đầu tiên Kiểm tra các trình giả lập được cài đặt

emulator -list-avds

nó sẽ có kết quả như dưới đây

emulator -list-avds
Nexus_4_API_28
Pixel_2_API_28

2- mở bất kỳ trình soạn thảo văn bản hoặc mã đơn giản nào và tạo một tệp mới và viết như dưới đây

#!/bin/sh
emulator -avd Nexus_4_API_28

Nexus_4_API_28 là trình giả lập mà tôi muốn mở bạn viết của bạn mà bạn đã nhận được từ bước đầu tiên

lưu tệp này với phần mở rộng .sh

3- Sau đó, thay đổi quyền trên tệp để thực hiện:

chmod u+x emu.sh

4- Bây giờ hãy mở trình giả lập chỉ cần thực thi tệp bash script này bằng lệnh sau

./emu.sh

nhập mô tả hình ảnh ở đây


Câu trả lời này tiết kiệm cho tôi và nhóm của tôi rất nhiều thời gian. Cảm ơn
Sopia Alfred

0

Bắt đầu giả lập từ dòng lệnh với trợ giúp dns

Vị trí chương trình giả lập: / Users / {{UserName}} / Library / Android / sdk / tools

  1. Kiểm tra avd hiện có: - trình giả lập -list-avds

  2. Bắt đầu trình giả lập với dns set / Users / {{UserName}} / Library / Android / sdk / tools / giả lập -avd Pixel_API_26 -dns-server 8.8.8.8


0

Xem hướng dẫn bên dưới cho Ubuntu Linux với zsh :

  1. Mở cửa sổ đầu cuối ( CTRL+ ALT+ T)
  2. Chạy lệnh nano ~/.zshrcđể chỉnh sửa hồ sơ của bạn
  3. Thêm các dòng sau trong tệp đã mở:
export ANDROID_SDK_HOME="~/Android/Sdk"
alias emulator="$ANDROID_SDK_HOME/emulator/emulator"
  1. Lưu tệp ( CTRL+ O, CTRL+ X)
  2. Nguồn hồ sơ bằng cách chạy lệnh source ~/.zshrc hoặc chỉ cần đăng xuất và đăng nhập lại
  3. Kiểm tra bằng cách chạy lệnh emulator -helptrong terminal

LƯU Ý : Nên giống nhau bashbằng cách thay thế .zshrcbằng.bashrc

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.