ADT 22.6.0版本的下载路径是:http://dl.google.com/android/ADT-22.6.0.zip

ADT22.6.1版本的下载路径是:http://dl.google.com/android/ADT-22.6.1.zip

SDK Tools r22.6版本的下载路径是:http://dl.google.com/android/android-sdk_r22.6-windows.zip

SDK Tools r22.6.1版本的下载路径是:http://dl.google.com/android/android-sdk_r22.6.1-windows.zip

 
自动修改android模拟器的imei的小程序

  该程序实现一下功能,

  1,修改android模拟器的imei,

  2,自动启动android模拟器

  3,运行开机启动程序,ps:这个开机启动程序apk就没放出来了。

  4,停止android模拟器;

  重复1,2,3过程

  import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

  public class Test {

  /**
* @param args
*/
public static void main(String[] args) {
 try {
   while(true){//

  eidtEmulator();//修改imei

  Runtime rt = Runtime.getRuntime(); 
     String command = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator -avd AVD-10";  
     rt.exec(command); // 运行android模拟器
     System.out.println("success run");

  Thread.sleep(2*60*1000);// 等待2分钟后,停止android模拟器
     if(findRunningWindowsProcess("emulator-arm.exe")){
       killRunningWindowsProcess("emulator-arm.exe");
   }
  }
 } catch (IOException e) {
  e.printStackTrace();
 } catch (Exception e) {
  e.printStackTrace();
 } 
}

public static void eidtEmulator() throws Exception{
  String oldFilePath = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator-arm.exe ";
  String newFilePath = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator-arm1.exe";
  FileInputStream in = new FileInputStream(oldFilePath);
  FileOutputStream out = new FileOutputStream(newFilePath);
  byte bytes[] = new byte[1];
  byte gsnbytes[] = new byte[3];
  byte imeiBytes[] = new byte[15];
  int count;
   while ((count = in.read(bytes)) != -1) {
      out.write(bytes);
      if (bytes[0] == 0x43) {// if is char 'C'
          count = in.read(gsnbytes);
          if (count == -1) {
             break;
          }
          out.write(gsnbytes);
          if (gsnbytes[0] == 0x47 && gsnbytes[1] == 0x53 && gsnbytes[2] == 0x4E) {//if is char 'GSN'
             count = in.read(bytes);//read char '.'
            if (count == -1) {
                break;
            }
             out.write(bytes);
             count = in.read(imeiBytes);//read old imei
           if (count == -1) {
                break;
             }
             byte[] imeis = getIMEIBytes();
             out.write(imeis);//write new imei;
           }
        }

  }
 in.close();
 out.close();
 File oldFile = new File(oldFilePath);
 oldFile.delete();
 File newFile = new File(newFilePath);
 newFile.renameTo(oldFile);
 

  }

  public static byte[] getIMEIBytes() {//随即生成15位imei号
   StringBuffer bff = new StringBuffer();
   byte imeiBytes[] = new byte[15];
   for(int i=0;i<imeiBytes.length;i++){
        int num = (int) Math.round(Math.random()*8);
        bff.append(num);
        imeiBytes[i] = Byte.parseByte("3"+num, 16);
     }
   // printArray(imeiBytes);
   System.err.println("start imei: "+bff.toString());
    return imeiBytes;
}

  public static void printArray(byte bytes[]) {
 StringBuffer buff = new StringBuffer();
 for (byte b : bytes) {
  buff.append(String.format("%02X", b) + " ");
 }
  System.out.println(buff.toString());
}

public static boolean killRunningWindowsProcess(String processName){  
    try {  
      Runtime.getRuntime().exec("taskkill /IM " + processName);  
      System.out.println("kill process successful");  
//      System.out.println("Process " + processName + " was killed. Mission completed.");  
      return true;  
    } catch (Exception ex) {  
      ex.printStackTrace();  
      System.out.println("kill process fail");  
      System.out.println("Misson failed.");  
      return false;  
    }  
  }  
public static boolean findRunningWindowsProcess(String processName) {  
    BufferedReader bufferedReader = null;  
    Process proc = null;  
    try {  
      proc = Runtime.getRuntime().exec("tasklist /FI \"IMAGENAME eq " + processName + "\"");  
      bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));  
      String line;  
      while ((line = bufferedReader.readLine()) != null) {  
        if (line.contains(processName)) {  
          return true;  
        }  
      }  
      return false;  
    } catch (Exception ex) {  
      ex.printStackTrace();  
      return false;  
    } finally {  
      if (bufferedReader != null) {  
        try {  
          bufferedReader.close();  
        } catch (Exception ex) {  
        }  
      }  
      if (proc != null) {  
        try {  
          proc.destroy();  
        } catch (Exception ex) {  
        }  
      }  
    }  
  } 

  }

andriod sdk 安卓模拟器修改imei码,位置信息

http://tieba.baidu.com/p/2343515177

自动批改android模拟器的imei的小程序 和 下载各个版本SDK Tools及ADT的更多相关文章

  1. 微信小程序0.11.122100版本新功能解析

    微信小程序0.11.122100版本新功能解析   新版本就不再吐槽了,整的自己跟个愤青似的.人老了,喷不动了,把机会留给年轻人吧.下午随着新版本开放,微信居然破天荒的开放了开发者论坛.我很是担心官方 ...

  2. 微信小程序如何下载超过大小限制(10M)的视频?(苹果用户仔细看,安卓用户快速看)

    众所周知,微信小程序对下载的文件大小有限制,目前是最大支持10M.我们在用去水印小程序保存视频的时候,如果遇到长视频,视频大小可能就超过限制.遇到这种情况,我们如何才能把视频保存到手机相册呢? 首先, ...

  3. [解决]小程序要求的 TLS 版本必须大于等于 1.2

    今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2 查官方文档 解决方法 在 PowerShell中运行以下内容, 然后重启服务器 # Enab ...

  4. 小程序报错 TLS 版本必须大于等于 1.2

    https://www.cnblogs.com/phpper/p/6866036.html 服务器是windows 2008 server 环境是IIS7SSL是申请用的阿里免费.微信小程序发现wx. ...

  5. 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2

    今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2 查官方文档 解决方法 在 PowerShell中运行以下内容, 然后重启服务器 # Enab ...

  6. 微信小程序 使用腾讯地图SDK详解及实现步骤

    信小程序 使用腾讯地图SDK详解及实现步骤    微信小程序JavaScript SDK: 官方文档:http://lbs.qq.com/qqmap_wx_jssdk/index.html 步骤: 1 ...

  7. 小程序报错:对应的服务器 TLS 为 TLS 1.0 ,小程序要求的 TLS 版本必须大于等于 1.2

    我这里出现此错误的原因是,搭载域名网站的服务器是windows2008 r2,配置的域名证书是TLS1.0版本,需要在服务器注册表中加入TLS的其他版本. 处理办法如下 小程序报错 TLS 版本必须大 ...

  8. 小程序 怎么发 beta 版本

    小程序 怎么发 beta 版本 微信 https://developers.weixin.qq.com/miniprogram/dev/devtools/mydev.html 小程序助手 支付宝 ht ...

  9. 解决android模拟器太大,小屏幕无法完全显示的问题

    http://hi.baidu.com/conanx/blog/item/05479befd6534d03fdfa3cbb.html 安装上Android模拟器之后,开启一个Android 2.2的模 ...

随机推荐

  1. Javascript 中ajax实现前台向后台交互

    第一种情况:前台传入字符串参数 后台返回json字符串.或是json数组  代码如下: 前台: $.ajax({ url: "xxx/xxx.action", data: &quo ...

  2. 08Vue.js快速入门-Vue综合实战项目

    8.1. 前置知识学习 npm 学习 官方文档 推荐资料 npm入门 npm介绍 需要了解的知识点 package.json 文件相关配置选项 npm 本地安装.全局安装.本地开发安装等区别及相关命令 ...

  3. Spring-boot 启动完成时执行指定任务

    在服务启动完成时,如果需要执行一些特定的预加载任务,则可以通过实现 CommandLineRunner 接口来实现. 实现 @Component public class Started implem ...

  4. <跟股市谚语学炒股> 读书笔记

    书在这里 一般情况下,当成交清单上显示的买盘金额大.笔数少,卖盘金额小.笔数多时,系主力在建仓.散户在卖出:相反,若买盘金额小.笔数多,卖盘金额大.笔数少时,系主力在出货.散户在买入 一般来说,当大盘 ...

  5. [Socket]Socket进程间的通信

    转自:http://blog.csdn.net/giantpoplar/article/details/47657303 前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket ...

  6. for语句练习 阶乘

    4的阶乘:4!=1*2*3*4 public class g { /** * @param args */ public static void main(String[] args) { int n ...

  7. if 语句练习 身高体重问题

    public class d { /** * @param args */ public static void main(String[] args) { // TODO 自动生成的方法存根 int ...

  8. html5的UI框架

    http://www.idangero.us/framework7/ http://goratchet.com/ http://cnratchet.com/ http://amazeui.org/ h ...

  9. EF code First数据迁移学习笔记

    准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-package EntityFramework  //安装EF环境 2.在项目下新建类(Paper) ...

  10. jQuery源代码解析(3)—— ready载入、queue队列

    ready.queue放在一块写,没有特殊的意思,仅仅是相对来说它俩可能源代码是最简单的了.ready是在dom载入完毕后.以最高速度触发,非常实用. queue是队列.比方动画的顺序触发就是通过默认 ...