自动批改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

时间: 2024-09-29 05:17:44

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

学习Android之第八个小程序文件保存(Notification、AndroidTestCase)

效果图:       .java文件有MainActivity.java.FileService.java.FileServiceTest.java, .xml文件有activity_main.xml. 本次注重AndroidTestCase类的使用,在开发中非常实用.用于测试某一功能. 使用AndroidTestCase类,有如下的要求: 1.在AndroidManifest.xml文件中,<manifest></manifest>中添加如下: <instrumentati

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

今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2 查官方文档 解决方法 在 PowerShell中运行以下内容, 然后重启服务器 # Enables TLS 1.2 on windows Server 2008 R2 and Windows 7 # These keys do not exist so they need to be created prior to setting values. md "HKLM:\SYSTEM\Cur

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

http://hi.baidu.com/conanx/blog/item/05479befd6534d03fdfa3cbb.html 安装上Android模拟器之后,开启一个Android 2.2的模拟器,发现屏幕太大了,模拟器最下面的导航按键根本就显示不出来,还是百度一下,找到了解决的办法如下: 打开Eclipse --> Run --> Run Configuration... --> Target 标签页最下面 Additional Emulator Command Line Op

android开发资源网站,下载各版本SDK源码、Android Studio、NDK等

http://www.androiddevtools.cn/ AndroidDevTools简介 Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程.Android设计规范,免费的设计素材等. 欢迎大家推荐自己在Android开发过程中用的好用的工具.学习开发教程.用到设计素材,欢迎Star.Fork . 如果你对翻译英文的Android开发技术文章感兴趣,欢

微信小程序发送验证码短信SDK及文档

微信小程序验证码版SDK增加了对短信验证码的管理,开发者无需生成管理验证码,该SDK可直接生成.存储.发送.校验. 官网 SDK下载地址 demo ? 1.安装下载后的SDK只包含一个zhenzisms.js文件,可直接放在utils文件夹中,然后通过require引入,如下: var zhenzisms = require('../../utils/zhenzisms.js');2.配置域名在微信公众平台-小程序管理中配置域名https://smsdeveloper.zhenzikj.com,

如何解决:对应的服务器 tls 为 tls 1.0,小程序要求的TLS版本必须大于等于1.2问题

微信小程序 TLS 版本必须大于等于1.2问题解决 此问题最近在微信小程序开发中,比较常见. 在解决这个问题之前,我们需要了解一下,当前的系统环境是否支持TLS1.2以上,可以参考一下表格: 请先确认系统支持TLS1.2以后,进行一下操作:(如不支持请升级系统到支持版本) windows2008R2在配置SSL做小程序开发时候提示小程序的TLS版本必须大于等于1.2. 解决方法: 请先备份导出HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\

微信支付-小程序H5 公众号 Payment SDK

前言 今天是2020年一天,去年最后一个月开发了订单和支付系统,尤其在支付系统和微信对接的时候遇到了很多坑,这里给大家总结下,以免大家遇到相同的问题还浪费大量时间 微信支付前期准备 微信商户号,需要商户号,密码 ,退款时需要证书,证书默认密码是商户号 微信app(如 微信小程序 或者 微信公众号) 的appid和appsecret 需要在商户中关联微信小程序和微信公众号,然后运营者确认. 至此微信支付前期工作完成 Payment 封装了微信 支付宝 银联等很多支付的SDK git地址 https

学习Android之第六个小程序新浪微博(二)(ListView和TabActivity)

效果图例如以下: 选项卡的使用: 1.继承TabActivity 2.声明TabHost变量,通过方法getTabHost()获取并赋值. (TabHost  tabHost =getTabHost() ;) 3.在xml文件里,创建TabHost组件和TabWidget组件.而且TabHost组件的id属性必须是: android:id="@android:id/tabhost" , TabWidgett组件的id属性必须是:android:id="@android:id/

微信小程序,错误{&quot;errMsg&quot;:&quot;request:fail 小程序要求的 TLS 版本必须大于等于 1.2&quot;}

解决方法一: 开发环境,项目--->勾选不校验即可 解决办法二: 在 PowerShell中运行以下内容, 然后重启服务器 # Enables TLS 1.2 on windows Server 2008 R2 and Windows 7 # These keys do not exist so they need to be created prior to setting values. md "HKLM:\SYSTEM\CurrentControlSet\Control\Securi