adbforandroid
A. Qt for Android問題,真機調試,usb debug打開了。adb的環境變數設置了。輸入adb
由於HTC的舊名就是High Tech Computer Corporation,所以很容易知道有關我們設備的信息就是最下面的那條
Bus 002 Device 022: ID 0bb4:0cac High Tech Computer Corp.
現在我們需要記住的就是ID後面的一項數據,在上面的情況中,我們需要記錄的是0bb4(不同廠商的設備ID的值可能不一樣,所以建議大家在使用ID值的時候先使用lsusb命令查詢)。
在/etc/udev/rules.d/中建立文件70-android.rules,其實LZ還不知道這個文件的命名到底有什麼規則,在網上也有看到說用51或者50開頭的,由於LZ拿70成功配置,所以這邊直接沿用。使用
sudo vim /etc/udev/rules.d/70-android.rules
B. 如何在android應用里執行adb 命令
ADB介面的作用主要是讓電腦等其它設備控制安卓系統的,所以,稱為「中間橋」;
不是為安卓自已用的,自已可直接執行稱為SHELL,這與ADB無關。
所以安卓java不一定有封裝的ADB類。電腦上有ADB服務程序,埠5037,
它是中間程序,與安卓系統上守護進程(Daemon)通訊。
如果要在自已的手機上應該也能執行adb命令,應該直接跟守護進程
(Daemon)通訊了。網路上可以搜到的方法並不滿意。
樓主用exec執行CMD命令,這已不是ADB介面了,這是系統的SHELL了!!!
自已用socket/tcp直接發命令效果不知怎樣,地址用127.0.0.1,安卓daemon進程的埠
5555是奇數開始。
。。。。至於ADB對話協議網路可以搜到,建議試一試。
樓上其實要的是SHELL,並不是ADB,我搜到一篇文章,但我並沒有試過,
是否需要ROOT,不得而知,附上,你試一試 ,回個話。
滿意就採納!
C. 怎麼在Android Studio中執行adb命令
android中執行shell命令有兩種方式:1.直接在代碼中用java提供的Runtime這個類來執行命令,以下為完整示例代碼。publicvoidexecCommand(Stringcommand)throwsIOException{//startthelscommandrunning//String[]args=newString[]{"sh","-c",command};Runtimeruntime=Runtime.getRuntime();Processproc=runtime.exec(command);//這句話就是shell與高級語言間的調用//如果有參數的話可以用另外一個被重載的exec方法//實際上這樣執行時啟動了一個子進程,它沒有父進程的控制台//也就看不到輸出,所以需要用輸出流來得到shell執行後的輸出InputStreaminputstream=proc.getInputStream();=newInputStreamReader(inputstream);BufferedReaderbufferedreader=newBufferedReader(inputstreamreader);//readthelsoutputStringline="";StringBuildersb=newStringBuilder(line);while((line=bufferedreader.readLine())!=null){//System.out.println(line);sb.append(line);sb.append('\n');}//tv.setText(sb.toString());//使用exec執行不會等執行成功以後才返回,它會立即返回//所以在某些情況下是很要命的(比如復制文件的時候)//使用wairFor()可以等待命令執行完成以後才返回try{if(proc.waitFor()!=0){System.err.println("exitvalue="+proc.exitValue());}}catch(InterruptedExceptione){System.err.println(e);}}}2.直接安裝shell模擬器,即已經開發好的android應用,啟動後類似windows的dos命令行,可以直接安裝使用,可執行常用的linux命令,應用在附件。
D. 如何在android應用里執行adb命令
最簡單的辦法是你可以參考SL4A(Scripting Layer for Android)項目,SL4A支持Python、Perl、JRuby、Lua、BeanShell、JavaScript、Tcl、shell等腳本的執行。其中shell的實現完全可以替代adb。
E. 是否可以使用adb調用安卓包中的任意類(只使用需要的功能,而不要去注冊什麼的)
通過adb並不能調用安卓包內的任意類,
否則安卓就沒有安全性可言了。
adb am也只是因為android做了am 這個工具,
讓用戶可以通過命令行實現啟動activity、service及廣播的功能。
其它的功能,am沒有提供用戶也無法使用。
請採納,謝謝。
F. 如何使用adb命令查看android中的資料庫
1,進入到控制台中,輸入adb shell,進入到命令模式的環境中
2,輸入:cd /data/data/
3, 選擇你所在的資料庫文件,比如我的com.android.homework, 輸入命令:cd com.android.homework
4, 可以使用ls -l 命令查看當前目錄中的文件
5,輸入: cd databases 進入到資料庫文件中
6, ls -l 顯示你資料庫中你建立的資料庫
7, sqlite3 info.db 進入到你選擇的資料庫中
8, .tables :查看你建的表
9, select * from table_name;s 可以查看整個表的信息
10, 使用其他的SQL語句可以進一步對表進行操作,注意SQL語句必須用分號(;)結尾
G. 如何通過 usb adb 與 android客戶端通訊
usb adb 與 android客戶端通訊是一個很重要的應用,必須要掌握扎實這個問題,今天我們來沖一下電吧。
監聽代碼
private void doListen() {
mServerSocket = null;
try {
mServerSocket = new ServerSocket(mServerPort);
mMainThreadFlag = true;
while (mMainThreadFlag) {
Socket client = mServerSocket.accept();
// 開啟線程處理客戶端請求並發送響應
ServerCmdTransfor sCmdHandler = new ServerCmdTransfor(this.mContext, client);
mHdList.add(sCmdHandler);
new Thread(sCmdHandler).start();
}
} catch (IOException e1) {
e1.printStackTrace();
/**
* 處理客戶端請求並發送響應 這些規則都是由產品經理協商好前後端的通訊協議
*/
private class ServerCmdTransfor extends TCPServerTransfor implements Runnable {
public Handler mNotifyHandler = null;
ServerCmdTransfor(Context context, Socket socket) {
super(context, socket);
}
@Override
public void run() {
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor start");
CmdData data = null;
// 先接收請求
data = readCMD();
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor readCMD ret " + data);
if (data != null) {
// 根據cmdId特殊處理
if (data.cmdId == CmdData.COMMAND_SMS_RECEIVE_REQ) {
// 手機-->PC端的推送
doNotify();
} else {
// 處理
data = TCPServer.this.mCmdHd.processReqCreateResp(data);
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor processReqCreateResp ret "
+ data);
// 然後發送響應
if (data != null) {
boolean ret = sendCMD(data);
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor sendCMD ret " + ret);
try {
mSocket.close();
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor close");
} catch (IOException e) {
e.printStackTrace();
}
}
轉載
H. 如何用adb命令 獲得Android手機解析度
在命令行中輸入「adb shell」 ;進入shell之後,再輸入「cat /system/build.prop grep "proct"」 設備信息主要是存放在「/system/build.prop」文件,通過「cat」命令就可以查看了。
拓展資料:
adb的全稱為Android Debug Bridge,就是起到調試橋的作用。通過adb我們可以在Eclipse中方便通過DDMS來調試Android程序,說白了就是debug工具。
它的主要功能有:
* 運行設備的shell(命令行)
* 管理模擬器或設備的埠映射
* 計算機和設備之間上傳/下載文件
* 將本地apk軟體安裝至模擬器或android設備
I. 如何在android程序中執行adb shell命令
android中執行shell命令有兩種方式:
1.直接在代碼中用java提供的Runtime 這個類來執行命令,以下為完整示例代碼。
public void execCommand(String command) throws IOException {
// start the ls command running
//String[] args = new String[]{"sh", "-c", command};
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command); //這句話就是shell與高級語言間的調用
//如果有參數的話可以用另外一個被重載的exec方法
//實際上這樣執行時啟動了一個子進程,它沒有父進程的控制台
//也就看不到輸出,所以需要用輸出流來得到shell執行後的輸出
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
// read the ls output
String line = "";
StringBuilder sb = new StringBuilder(line);
while ((line = bufferedreader.readLine()) != null) {
//System.out.println(line);
sb.append(line);
sb.append(' ');
}
//tv.setText(sb.toString());
//使用exec執行不會等執行成功以後才返回,它會立即返回
//所以在某些情況下是很要命的(比如復制文件的時候)
//使用wairFor()可以等待命令執行完成以後才返回
try {
if (proc.waitFor() != 0) {
System.err.println("exit value = " + proc.exitValue());
}
}
catch (InterruptedException e) {
System.err.println(e);
}
}
}
2.直接安裝shell模擬器,即已經開發好的android應用,啟動後類似windows的dos命令行,可以直接安裝使用,可執行常用的linux命令,應用在附件。
J. 一台PC連接多個Android手機,使用adb命令可以給這多台手機同時安裝一個apk,這樣可以實現嗎怎麼寫
你是想用代碼實現嗎?
你可以啟動多個線程,在線程裡面進行安裝,這樣可以同時多個手機安裝;
也可以寫方法,在方法裡面進行安裝,這樣是順序安裝;
主要方法是:調用 adb install + apk的絕對路徑名;
如果有多部手機,調用adb -s + 手機編號(如果不知道怎麼獲取,請繼續回復)+ install + apk絕對路徑;
在代碼里執行:Runtime.getRuntime().exec(
"adb -s " + devName + " install " + apkAddress);
private void installApkToMobile(String devName, String apkAddress)
{
Process process = null;
String buff = "";
try
{
process = Runtime.getRuntime().exec(
"adb -s " + devName + " install " + apkAddress);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "utf-8"));
while ((buff = br.readLine()) != null)
{
print(buff);
if (buff.contains("INSTALL_FAILED_ALREADY_EXISTS"))
{
print(devName + "已安裝");
}
}
br.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
我現在也是在做這樣的東西,歡迎繼續討論,相互學習。