首页 > 代码库 > 自动批改android模拟器的imei的小程序 和 下载各个版本SDK Tools及ADT

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

 

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