精华内容
下载资源
问答
  • DDMS adb 线性布局

    2019-02-17 21:16:54
    netstat -ano:查看端口占用情况 线性布局 竖直方向时 左右对齐生效 顶部底部对齐无效 水平居中生效 竖直居中无效 水平方向时 权重 按比例分配剩余空间

    SDK

    • software development kits
    • ADT插件:eclipse开发Android必须使用的插件
      • android development tools
    • docs:离线帮助文档
    • platforms:下载该平台才能创建该版本的模拟器
    • system-images:CPU系统镜像,下载该镜像才能创建该平台的模拟器
    • sources:Android.jar源码
    • tools:SDK工具集
    • platform-tools:平台工具集
    • extras
      • 支持类库:让低版本系统可以运行高版本的新特性

    Android项目目录结构

    • src:java源码
    • Android.jar:导入jar包才能使用Android的api
    • libs:第三方jar包
    • assets:资源文件夹,存放音频视频等较大文件
    • bin:编译打包后自动生成的文件
    • res:资源文件夹
      • drawable:存放图片

    清单文件

    • package:应用的包名,唯一标识
    • versionCode:版本号,系统看的
    • versionName:版本名字,给人看的
    • application:
      • icon:应用图标
      • label:应用标题
    • activity:Activity的使用必须要在清单文件中配置
      • icon:Activity也可以配置icon,不配置默认使用application的

      • 以下标签用于配置入口Activity

              <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
        

    DDMS

    • dalvik debug monitor service

    ADB

    • Android debug bridge
    • 让Android设备和eclipse建立连接
    • ADB指令
      • adb install E:\yyh.apk:安装指定apk
      • adb uninstall com.yingyonghui.market: 删除指定应用
      • adb start-server:开启adb进程
      • adb kill-server:杀死adb进程
      • adb devices:列出与开发环境建立连接的Android设备的列表
      • adb shell:进入Linux命令行
        • ls:列出当前目录结构
        • ps:列出当前设备的所有进程
      • netstat -ano:查看端口占用情况

    线性布局

    • 竖直方向时
      • 左右对齐生效
      • 顶部底部对齐无效
      • 水平居中生效
      • 竖直居中无效
    • 水平方向时

    权重

    • 按比例分配剩余空间
    展开全文
  • 在配置文件中指定字符串id 在Java代码中指定字符串id R.layout.wmj第三方应用的保存路径是:data/app 系统应用的保存路径是:...Adb start -server:启动adb进程 Adb kill -server:杀死adb进程 Adb install F:/

    在配置文件中指定字符串id
    这里写图片描述
    在Java代码中指定字符串id
    R.layout.wmj

    第三方应用的保存路径是:data/app
    系统应用的保存路径是:system/app
    Data/data/包名文件夹:系统为每个应用分配一个专属空间

    Adb指令:
    Adb start -server:启动adb进程
    Adb kill -server:杀死adb进程
    Adb install F://abc.apk
    Adb uninstall 应用文件名
    Adb devices 查看当前与开发环境相连的设备列表
    Adb shell 进入Android命令行

    电话和短信功能:
    打电话的api需要访问权限,不可以直接访问到
    而发短信的api可以访问到,开发者可以直接访问
    这里写图片描述
    Android:id指定资源id
    inputType:设置输入类型
    Hint:内容提示,阴影显示不影响输入
    Lines:输入框行数
    Gravity:设置组件内容的对齐方式

    定义id:@+id
    引用id:@id

    Android布局:
    1.LinearLayout:线性布局
    2.Relativelayout:相对布局
    3.FrameLayout:帧布局
    4.tableLayout:表格布局
    5.AbsoluteLayout:绝对布局

    线性布局
    在竖直布局下,左对齐、右对齐、水平居中生效
    在水平布局下,顶部对齐、底部对齐、竖直居中生效
    android:layout_weight:平均分配屏幕的剩余宽度或高度

    相对布局
    没有权重,也没有方向
    组件默认位置是左上角
    可以相对于父元素上下左右、水平居中、竖直居中、竖直水平居中对齐
    可以相对于其他组件上下左右对齐
    可以布局与其他组件的上边、下边、左边、右边
    android:layout_alignParentRight=”true”:父元素右边对齐
    android:layout_centerInParent=”true”:相对于屏幕中央对齐
    android:layout_above=”@id/tv2”:相对于某个组件上方,只能保证在上方一行位置,无法保证在正上方
    android:layout_alignLeft=”@id/tv2”:左边框对齐某个元素

    帧布布局
    组件默认位置是左上角
    可以上下左右水平居中对齐,类似线性布局
    表格布局:
    每有一个tablerow子节点代表有一行,该节点的的每一个子节点代表一列
    Tablelayout的一级子节点的宽度匹配父节点
    Tablerow的子节点的默认宽高都包裹内容

    布局文件的组件的首字母要大写

    Logcat:
    Verbose:冗余,最低级别
    Debug:调试
    Info:正常等级的信息
    Warn:警告信息
    Error:错误信息

    访问SD卡需要权限,在用eclipse创建模拟器时需要给sd卡空间

    展开全文
  • adb命令获取app布局文件xml

    千次阅读 2019-09-28 06:39:27
    adb shell /system/bin/uiautomator dump --compressed /data/local/tmp/uidump.xml adb pull /data/local/tmp/uidump.xml C:/Users/Administrator/Desktop 获取xml文件并导出到电脑桌面 转载于:...
    adb shell /system/bin/uiautomator dump --compressed /data/local/tmp/uidump.xml
    
    
    adb pull /data/local/tmp/uidump.xml C:/Users/Administrator/Desktop

    获取xml文件并导出到电脑桌面

    转载于:https://www.cnblogs.com/codeDevotee/p/11397473.html

    展开全文
  • adb查看手机设备型号、品牌、机型等信息 以下操作均基于ADB模式。 1、查看机型时,可以使用以下命令: $ adb shell getprop ro.product.model 1 输出结果如下: 2、如果我们忘记具体系统属性的名字...

    adb查看手机设备型号、品牌、机型等信息

     

    以下操作均基于ADB模式。

     

    1、查看机型时,可以使用以下命令:

     

    $ adb shell getprop ro.product.model

    1

    输出结果如下: 

     

     

    2、如果我们忘记具体系统属性的名字,我们可以使用grep进行过滤,比如:

     

    $ adb shell getprop | grep product

    1

    输出结果如下: 

     

    我们过滤product关键字,可以看到很多关于产品的系统属性(品牌、型号、厂商等)。

     

    也可以使用如下方式,直接查找/system/build.prop文件中属性值:

     

    $ adb shell cat /system/build.prop | grep product

    1

    输出结果如下图所示: 

     

     

    3、我们还可以通过 adb devices 命令来查看设备信息:

     

    以下命令查看设备ID:

     

    $ adb devices

    1

    查看型号等详细信息使用以下命令:

     

    $ adb devices -l

    1

    输出结果如下图所示: 

     

     

      本文就是在我们自己的代码里面直接利用socket与adb service通讯,绕过执行cmd和利用管道获取数据,这种方式在速度上面会快很多,基本原理就是参考adb的源码 把socket与adb service相关的代码移植到自己的工程里面,下面就是一个demo代码,真正移植到项目还需要修改。

     

    (由于在公司有加密软件的原因,源代码只能以文本方式一部分一部分拷贝到博客,所有下面的布局会不清晰)

     

    AdbSocketHelper.h

     

    #pragma once

    #include <Winsock2.h>//这个需要放在 windows.h前面

    #include <string>

    #include <vector>

     

    using std::string;

    using std::wstring;

     

    class AdbSocketHelper

    {

    public:

     AdbSocketHelper(void);

     ~AdbSocketHelper(void);

     string getDevices();

     string getAdbVersion();

     

    string adbShell(const string shellCmd,const string deviceSN);

     void setAdbPathAndPort(wstring wcspath,int server_port);

    private:

     string executeAdb(const string cmd);

     string executeDeviceAdb(const string cmd,const string deviceSN);

     

     bool createAdbSocket(SOCKET &Socket,string &strError);

     int launch_server();

     SOCKET socketClient();

     bool executeSocket(const SOCKET Socket,const string cmd,bool recvLoop,string &strdata);

     bool sendSocketData(const SOCKET Socket,const string strdata);

     bool recvSocketDataOnce(const SOCKET Socket,string &strdata);

     bool recvSocketDataLoop(const SOCKET Socket,string &strdata);

     

    int m_serverport;

     wstring m_wcspath;

     static bool iniSocketLib;

    };

     

     

     

    下面是AdbSocketHelper.cpp文件

     

    #include "AdbSocketHelper.h"

     

    #pragma comment(lib,"ws2_32.lib")

    bool AdbSocketHelper::iniSocketLib = false;

    #define MAX_BUF 1024*4+1

     

    AdbSocketHelper::AdbSocketHelper(void)

    {

     //test 的默认值设置

     m_serverport = 6037;

     m_wcspath = L"E:\\work\\adb\\LibAdb\\Debug\\LibAdb.exe";

    }

     

    AdbSocketHelper::~AdbSocketHelper(void)

    {

     

    }

     

    void AdbSocketHelper::setAdbPathAndPort(wstring wcspath,int server_port)

    {

     m_wcspath = wcspath;

     m_serverport = server_port;

    }

     

    string AdbSocketHelper::getAdbVersion()

    {

     string retStr = executeAdb("host:version");

     return retStr;

    }

     

    string AdbSocketHelper::getDevices()

    {

     string retStr = executeAdb("host:devices");

     return retStr;

    }

     

    string AdbSocketHelper::adbShell(string shellCmd,string deviceSN)

    {

     string retStr;

     string realCmd = "shell:";

     realCmd+=shellCmd;

     string realdeviceSN = deviceSN;

     if (realdeviceSN.empty())

     {//0012host:transport-any

      realdeviceSN = "-any";

     }

     else

     {

      realdeviceSN = ":"+realdeviceSN;

     }

     

     retStr = executeDeviceAdb(realCmd,realdeviceSN);

     return retStr;

    }

     

    string AdbSocketHelper::executeAdb(const string cmd)

    {

     string retStr;

     retStr.clear();

     SOCKET clientSocket = INVALID_SOCKET;

     if (createAdbSocket(clientSocket,retStr))

     {

      executeSocket(clientSocket,cmd,true,retStr);

      // 服务端会关闭,所以客户端每次都创建新的socket,用完就关闭

      closesocket(clientSocket);

     }

     return retStr;

    }

     

    string AdbSocketHelper::executeDeviceAdb(const string cmd,const string deviceSN)

    {

     string retStr;

     retStr.clear();

     SOCKET clientSocket = INVALID_SOCKET;

     if (createAdbSocket(clientSocket,retStr))

     {

      //因为指定了 设备序列号,所以需要先host:transport

      string transportCmd = "host:transport";

      transportCmd += deviceSN;

      executeSocket(clientSocket,transportCmd,false,retStr);

      //需要执行两次

      executeSocket(clientSocket,cmd,true,retStr);

      // 服务端会关闭,所以客户端每次都创建新的socket,用完就关闭

      closesocket(clientSocket);

     }

     return retStr;

    }

     

    bool AdbSocketHelper::createAdbSocket(SOCKET &Socket,string &strError)

    {

     bool bRet = true;

     Socket = socketClient();

     if (INVALID_SOCKET == Socket)

     {

      //socket 连接不上就 认为服务没有启动

      if (0==launch_server())

      {//启动服务 成功

      }

      else

      {

       strError = "Error:launch server fail.";

       bRet = false;

      }

     }

     return bRet;

    }

     

    bool AdbSocketHelper::executeSocket(const SOCKET Socket,const string cmd,bool recvLoop,string &strdata)

    {

     bool bRet = true;

     if ((sendSocketData(Socket,cmd)))

     {

      if (recvLoop)

      {

       bRet = recvSocketDataLoop(Socket,strdata);

      }

      else

      {

       bRet = recvSocketDataOnce(Socket,strdata);

      }

     }

     else

     {

      bRet = false;

     }

     return bRet;

    }

     

    bool AdbSocketHelper::sendSocketData(const SOCKET Socket,const string strdata)

    {

     //发送的数据前面需要添加 4位的 数据长度,这个是从adb源码获取的

     char tmpCharLen[5] = {0};

     _snprintf_s(tmpCharLen, sizeof tmpCharLen,4 ,"%04x",strdata.length());

     string realData(tmpCharLen);

     realData += strdata;

     int retVal = send(Socket,realData.c_str(),realData.length(),0);

     if (SOCKET_ERROR == retVal)

     {

      printf("sendSocketData %s error = %d\n",strdata.c_str(),WSAGetLastError());

      return false;

     }

     return true;

    }

     

    bool AdbSocketHelper::recvSocketDataOnce(const SOCKET Socket,string &strdata)

    {

     bool bRet = true;

     char *buf = new char[MAX_BUF+1];

     ZeroMemory(buf, MAX_BUF+1);

     int retVal=recv(Socket,buf,MAX_BUF,0); 

     if (SOCKET_ERROR == retVal )

     {

      //接收出错了

      printf("recvSocketData recv error %d\n",WSAGetLastError());

      bRet = false;

     }

     else

     {

      if(0 == memcmp(buf, "OKAY", 4)) 

      {

     

      }

      else

      {

       strdata.append(buf);

       bRet = false; //状态错误

      }

     }

     return bRet;

    }

     

     

     

    bool AdbSocketHelper::recvSocketDataLoop(const SOCKET Socket,string &strdata)

    {

     bool bRet = true;

     strdata.clear();

     char *buf = new char[MAX_BUF+1];

     bool isFist = true;

     int DataLen;

     while(1)

     {

      ZeroMemory(buf, MAX_BUF+1);

      int retVal=recv(Socket,buf,MAX_BUF,0); 

      if (SOCKET_ERROR == retVal )

      {

       //接收出错了

       printf("recvSocketData recv error %d\n",WSAGetLastError());

       bRet = false;

       break;

      }

     

    else if (0 == retVal)

      {

       //数据接收完成了

       break;

      }

      else

      {

       if (isFist)

       {

        isFist = false;

        if(0 == memcmp(buf, "OKAY", 4)) 

        {//应该接收到的数据长度

         char tmp[5] = {0};

         memcpy(tmp,buf+4,4);

         DataLen = strtol(tmp, NULL, 16);

        }

        else

        {

         bRet = false; //状态错误

        }

       }

       else

       {

        strdata.append(buf);

       }

      }

     }

     delete [] buf;

     

     if (DataLen != strdata.length())

     {

      printf("recvSocketData  data length is error \n");

     }

     return bRet;

    }

     

    SOCKET AdbSocketHelper::socketClient()

    {

     SOCKET clientSocket = INVALID_SOCKET;

     if (!iniSocketLib)

     {

      //加载socket库函数

      WORD wVersionRequested;

      WSADATA wsaData;

      int err;

      wVersionRequested = MAKEWORD(2,2);

      err = WSAStartup( wVersionRequested, &wsaData );

      if ( err != 0 ) 

      {                           

       printf("WSAStartup fail ... %d \n",WSAGetLastError());

       return clientSocket;

      }

      else

      {

       iniSocketLib = true;

      }

     }

     

    // 创建套接字 

     if ((clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))   ==   INVALID_SOCKET)    

     {   

      printf("socket()   failed   with   error   %d\n",   WSAGetLastError());   

     }

     else

     {

      SOCKADDR_IN   InternetAddr;

      memset(&InternetAddr, 0, sizeof(InternetAddr));

      InternetAddr.sin_family = AF_INET;

      InternetAddr.sin_port = htons(m_serverport);

      InternetAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);

     

      int retVal;

     

    //连接服务器

      retVal = connect(clientSocket, (LPSOCKADDR)&InternetAddr, sizeof(InternetAddr));

      if (SOCKET_ERROR == retVal)

      {

       printf("connect() socket failed  with   error   %d\n",   WSAGetLastError());  

       closesocket(clientSocket);

       clientSocket = INVALID_SOCKET;

      }

     }

     return clientSocket;

    }

     

    //启动服务 这个是从adb源码里面获取出来的,修改了部分

    int AdbSocketHelper::launch_server()

    {

        HANDLE                pipe_read, pipe_write;

        HANDLE                stdout_handle, stderr_handle;

        SECURITY_ATTRIBUTES   sa;

        PROCESS_INFORMATION   pinfo;

        int                   ret;

        STARTUPINFOW    startup;

        wchar_t               program_path_unicode[MAX_PATH] = {0};

        sa.nLength = sizeof(sa);

        sa.lpSecurityDescriptor = NULL;

        sa.bInheritHandle = TRUE;

     

        /* create pipe, and ensure its read handle isn't inheritable */

        ret = CreatePipe( &pipe_read, &pipe_write, &sa, 0 );

     

    if (!ret) {

            fprintf(stderr, "CreatePipe() failure, error %ld\n", GetLastError() );

            return -1;

        }

     

        SetHandleInformation( pipe_read, HANDLE_FLAG_INHERIT, 0 );

     

      ZeroMemory( &pinfo, sizeof(pinfo) );

      ret = CreateProcessW(m_wcspath.c_str(),L"adb fork-server server",NULL,NULL,TRUE,DETACHED_PROCESS,NULL,NULL,&startup,&pinfo);

     

        CloseHandle( pipe_write );

     

    if (!ret) {

            fprintf(stderr, "CreateProcess failure, error %ld\n", GetLastError() );

            CloseHandle( pipe_read );

            return -1;

        }

     

        CloseHandle( pinfo.hProcess );

        CloseHandle( pinfo.hThread );

     

    /* wait for the "OK\n" message */

        {

            char  temp[3];

            DWORD  count;

     

            ret = ReadFile( pipe_read, temp, 3, &count, NULL );

            CloseHandle( pipe_read );

            if ( !ret ) {

                fprintf(stderr, "could not read ok from ADB Server, error = %ld\n", GetLastError() );

                return -1;

            }

            if (count != 3 || temp[0] != 'O' || temp[1] != 'K' || temp[2] != '\n') {

                fprintf(stderr, "ADB server didn't ACK\n" );

                return -1;

            }

        }

        return 0;

    }

     

     

     

    下面是测试代码,测试代码只是测试了两个命令,测试代码很简单

     

     AdbSocketHelper adbHelper;

     adbHelper.setAdbPathAndPort(L"E:\\work\\adb\\LibAdb\\Debug\\Adb.exe",5037);

    string strRet;

     

     strRet = adbHelper.getAdbVersion();

     printf("%s\n",strRet.c_str());

     strRet = adbHelper.getDevices();

     printf("%s\n",strRet.c_str());

     strRet = adbHelper.adbShell("dumpsys iphonesubinfo","");

     printf("%s\n",strRet.c_str());

     

    简单的把手机连接到电脑,安装好驱动,就能获取到adb的版本信息和当前的设备列表。

     

    其他的adb命令可以参考adb的源码来完善,这里只是给出一个demo,需要在项目中使用的时候,直接把上面的类添加到工程,补充其他的adb命令即可。

    展开全文
  • adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p' 有如下输出
  • adb获取当前页面的UI布局层次结构

    千次阅读 2021-06-12 16:02:02
    获取当前应用的activity屏幕上所有控件的UI布局层次关系并保存在xml文件里面,可以执行下面命令: adb shell uiautomator dump /sdcard/ui.xml 实质是调用了Android系统下的/system/bin/uiautomator.jar的...
  • 什么是ADBADB的全称为Android Debug Bridge,就是起到调试桥的作用。通过ADB我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。ADB的工作方式比较特殊,采用监听Socket TCP 5554等端口的...
  • Warning : debug info can be unavailable.Please close other application using ADB :Monitor,DDMS,Eclipse. 而调试、运行都可以。 有个解决的方法 点击tools-->Layout Inspector,在窗口出现的瞬间,快速...
  • android创建数据库及adb查看数据库

    千次阅读 2015-12-18 19:34:30
    布局文件: < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:...
  • Android项目的目录结构 DDMS 常用adb指令 电话拨号器 点击事件四种写法 短信发送器 常用布局
  • adb获取当前页面的UI层次布局文件

    千次阅读 2019-04-01 11:29:00
    adb shell uiautomator dump /sdcard/ui.xml 可以获取当前应用的activity屏幕上所有控件的层级信息并保存在sdcard下ui.xml文件里面. 然后通过解析ui.xml文件就可以拿到想要的控件信息. 原理: 调用安卓设备...
  • adb命令

    2020-11-30 19:19:05
    adb命令 1.连接设备 mac操作 adb kill-server 杀服务 adb devices 启动设备 win系统需要先 adb connect 127.0.0.1:7555 (mumu模拟器端口号,连手机可不用此步骤) 2.指定设备 adb -s emulator install D:\huizhijia_...
  • 在cmd 命令窗口输入命令, adb shell “dumpsys window | grep mCurrentFocus” (还没安装adb的可以百度搜索解压包就好了)
  • adb 命令

    2021-08-14 22:13:48
    1、连接设备(mumu) win: adb connect 127.0.0.1:7555 adb devices mac adb kill-server adb devices 指定设备 adb -s 设备序列号 命令 安装 apk 安装:adb install apk路径 ...查看第三方应用包名:adb s
  • android显示布局边界查看布局

    万次阅读 2017-02-08 18:24:48
    安卓开发者查看布局边界的步骤: 设置 - 开发人员选项 - (勾选)显示布局界限 立马就可以看到屏幕上,很多线条 红色:一个view的上边,下边,左边,右边 边界线 蓝色:一个view的角,比如长方形的四个角 粉红...
  • adb 指令

    2016-01-26 16:48:15
    adb monkey test: adb shell monkey -p your.package.name -v 500
  • 常用adb命令

    2020-04-04 02:00:56
    最好参考google官方文档:...查看当前activity: adb shell dumpsys activity | grep mFocusedActivity 或 adb shell dumpsys window | grep mCurrentFocus 2. adb安装apk ...
  • ADB命令

    2020-11-02 11:27:49
    adb devices (查看手机与电脑是否连接成功) adb install apk安装包路径 (指定的apk文件安装到手机上) adb shell pm list packages -3 (查询手机上第三方的包名) adb shell monkey -p com.xy.android.junit...
  • 选择正在运行的debug软件的进程,即可查看软件UI的设置问题。
  • 1. adb shell 2. wm size Physical size: 1600x480 3. wm density Physical density: 160 转载于:https://www.cnblogs.com/zhaoqingyue/p/5887683.html
  • ADB使用小结

    千次阅读 2015-12-08 17:49:06
    简介ADB全称Android Debug Bridge,我们在开发过程中经常使用这个工具来操作Android系统。 在使用ADB过程中有一些常识和细节,我们来总结一下。ADB主要功能有: 1、在Android设备上运行Shell(命令行) 2、管理...
  • Android 真机布局查看

    千次阅读 2019-04-02 10:52:05
    Android真机布局查看方法一方法二 对于Android开发的小伙伴我们经常会发现别人的一些很酷炫的页面效果,或者是一些不错的页面展示结构,对于一些比较复杂的布局我们可能就会想去看看人家是怎么实现的。这个时候我们...
  • androaid:adb命令

    2021-04-01 10:15:18
    1、获取app布局文件xml adb shell /system/bin/uiautomator dump --compressed /data/local/tmp/uidump.xml adb pull /data/local/tmp/uidump.xml C:/Users/v_vfldai/Desktop 2、查看当前启动中的应用信息(包名、...
  • adb shell dumpsys

    2019-04-10 02:20:57
    adb shell dumpsys命令是用于打印出当前系统信息(更切确的说是dumpsys命令,因为adb shell只是为了进入手机或模拟器的shell内核,使其能够执行dumpsys命令),可以在命令后面加指定的service name(比如activity,location...
  • ADB环境部署+ADB常见命令

    千次阅读 2018-06-10 12:05:45
    Android系统自带monkey程序,模拟用户触摸屏幕,滑动trackball(轨迹球),按键等操作来对设备上才程序进行压力测试,检测程序多久的时间会发现异常-------崩溃,闪退,无响应部署ADB环境ADB(Android debug brige ...
  • android adb 命令详解

    2019-11-22 10:37:20
    运行adb命令:尝试定位ADB服务器,找不到则启动一个服务器; adb client向ADB servcer发送服务请求。 adb server--运行在pc端的后台进程 作用: (1)检测USB端口感知设备的连接/拔除和模拟器实例的启动或停止...
  • 模拟器adb连不上的问题

    万次阅读 2017-11-03 15:26:41
    模拟器adb连不上的问题当我们使用AS在真机上面使用调试、用Tools查看布局时,adb经常会断开重连,如果这个时候我们想在模拟器上运行,却发现模拟器是找不到的 这很明显是adb没连接上,此时我们只需使用温抖死系统...
  • adb and json

    2013-03-25 08:57:29
    1.adb 卸载apk:执行命令$adb shell $su $cd data/app $ls $exit $exit $adb uninstall -k 包名 js开发的文件布局:每一个story建立一个文件夹,每个js文件夹的js严格按照mvc的结构进行分类。首先是m层的js,先写...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,333
精华内容 5,333
关键字:

adb查看布局