【问题标题】:Knowing if Android app is running from Eclipse了解 Android 应用程序是否从 Eclipse 运行
【发布时间】:2012-10-04 12:40:36
【问题描述】:

我如何知道(例如在 Activity 中)应用程序是从 Eclipse 安装和运行的(通过 USB 插入移动设备)?

【问题讨论】:

  • 你为什么要这样做?也许有另一种解决根本问题的方法。
  • 这不是问题 :) 它只会帮助我发展。因为当我开发时,我连接到测试服务器和生产服务器上的生产过程。所以我只想小心一点。

标签: android eclipse debugging android-activity


【解决方案1】:

所有应用程序都由证书签名。即使由 Eclipse 启动。在 eclipse 中使用 android SDK 时,默认会创建一个调试密钥库,并在您每次使用 IDE 构建应用程序并将其推送到设备/模拟器时使用。

您可以在代码中获取有关密钥库的信息,并验证它是您自己的签名代码还是其他代码。我在 eclipse 中的应用程序上使用了下面快速而肮脏的代码:

    try {
        PackageInfo pi = this.getPackageManager().getPackageInfo( this.getPackageName(), PackageManager.GET_SIGNATURES);
        Signature[] signatures = pi.signatures;
        byte[] cert = signatures[0].toByteArray();
        InputStream input = new ByteArrayInputStream(cert);
        CertificateFactory cf = CertificateFactory.getInstance("X509");
        X509Certificate cf509 = (X509Certificate) cf.generateCertificate(input);
        Log.d(LOG_TAG, "Certificate issued by: " + cf509.getIssuerDN() );
    } catch ( Exception e ) {

结果是:

Certificate issued by: CN=Android Debug, O=Android, C=US

更好的结构化代码和功劳归功于此链接: http://thomascannon.net/misc/android_apk_certificate/

【讨论】:

    【解决方案2】:

    使用 android:debuggable=true 标志从 Eclipse 构建您的应用程序。然后你可以用这种方法从应用程序中检查它的值:Getting "debuggable" value of androidManifest from code?

    【讨论】:

      猜你喜欢
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 2012-12-22
      • 2012-04-02
      • 1970-01-01
      • 2011-02-17
      相关资源
      最近更新 更多