+1 логгер

  1. boolean isDebuggable = false;
  2. try {
  3.     PackageManager pm = getPackageManager();
  4.     isDebuggable = (0 != (pm.getApplicationInfo(this.getPackageName(),
  5.             PackageManager.GET_META_DATA).flags & ApplicationInfo.FLAG_DEBUGGABLE));
  6.  
  7.     PackageInfo pinfo = pm.getPackageInfo(this.getPackageName(),
  8.             PackageManager.GET_SIGNATURES);
  9.  
  10.     Signature signatures[] = pinfo.signatures;
  11.  
  12.     CertificateFactory cf = CertificateFactory.getInstance("X.509");
  13.  
  14.     for (int i = 0; i < signatures.length; i++) {
  15.         ByteArrayInputStream stream = new ByteArrayInputStream(
  16.                 signatures[i].toByteArray());
  17.         X509Certificate cert = (X509Certificate) cf
  18.                 .generateCertificate(stream);
  19.         isDebuggable = cert.getSubjectX500Principal().equals(
  20.                 new X500Principal("CN=Android Debug,O=Android,C=US"));
  21.         if (isDebuggable)
  22.             break;
  23.     }
  24.  
  25. } catch (Throwable ex) {
  26.     isDebuggable = true;
  27. }
  28.  
  29. if (isDebuggable) {
  30.     try {
  31.         String path = Environment.getExternalStoragePublicDirectory(
  32.                 Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
  33.         java.io.File f = new java.io.File(path);
  34.         if (!f.exists())
  35.             if (!f.mkdirs()) {
  36.                 path = Environment.getExternalStorageDirectory()
  37.                         .getAbsolutePath();
  38.             }
  39.         if (!path.endsWith("/"))
  40.             path = path + "/";
  41.         String[] commands = {
  42.                 "dumpstate > " + path + "dumpstate.txt",
  43.                 "dumpsys > " + path + "dumpsys.txt",
  44.                 "logcat -d > " + path + "log.txt",
  45.                 "cat " + path + "dumpstate.txt " + path
  46.                         + "dumpsys.txt " + path + "log.txt > " + path
  47.                         + "bugreport.rtf" };
  48.         Process p = Runtime.getRuntime().exec("/system/bin/sh -");
  49.         DataOutputStream os = new DataOutputStream(p.getOutputStream());
  50.         for (String tmpCmd : commands) {
  51.             os.writeBytes(tmpCmd + "\n");
  52.         }
  53.         System.out.println("Start logging...");
  54.     } catch (Throwable e) {
  55.         e.printStackTrace();
  56.     }
  57. }
Проверят если в DEBUG собрано приложение (значит отлаживаемся и тестим), то начинает сохранять в "Загрузки" дампы и логкат. Если RELEASE то ничего не делает

Реклама

Мы в соцсетях

tw tg yt gt