知道Android应用程序是否从Eclipse运行

时间:2012-10-04 12:40:37

标签: android eclipse debugging android-activity

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

2 个答案:

答案 0 :(得分:3)

所有申请均由证书签署。即使是由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/

答案 1 :(得分:1)

使用android:debuggable = true标志从eclipse构建应用程序。然后,您可以使用以下方法从应用中检查其值:Getting "debuggable" value of androidManifest from code?