Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓系统中的签名是什么?为什么会显示错误;签名处于调试模式";?_Android_Launching Application - Fatal编程技术网

Android 安卓系统中的签名是什么?为什么会显示错误;签名处于调试模式";?

Android 安卓系统中的签名是什么?为什么会显示错误;签名处于调试模式";?,android,launching-application,Android,Launching Application,有很多免费的android appmarket,但Mobogenie是正版且健壮的android应用程序容器,但当我上传我的android.apk文件时,它向我显示了一个错误“签名处于调试模式” 我怎样才能修好它 那么android中的签名是什么呢 签名是一个引擎类,它能够使用已在安全类中注册的不同算法创建和验证数字签名。 首先导入以下..,然后尝试以这种方式调试您的方法 import android.content.pm.Signature; import java.security.ce

有很多免费的android appmarket,但Mobogenie是正版且健壮的android应用程序容器,但当我上传我的android.apk文件时,它向我显示了一个错误“签名处于调试模式”

我怎样才能修好它


那么android中的签名是什么呢

签名是一个引擎类,它能够使用已在安全类中注册的不同算法创建和验证数字签名。
首先导入以下..,然后尝试以这种方式调试您的方法

import android.content.pm.Signature;  
import java.security.cert.CertificateException;  
import java.security.cert.X509Certificate; 

private static final X500Principal DEBUG_DN = new X500Principal("CN=Android Debug,O=Android,C=US");  
private boolean isDebuggable(Context ctx)
{ 
boolean debuggable = false;

try
{
    PackageInfo pinfo = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(),PackageManager.GET_SIGNATURES);
    Signature signatures[] = pinfo.signatures;

    CertificateFactory cf = CertificateFactory.getInstance("X.509");

    for ( int i = 0; i < signatures.length;i++)
    {   
        ByteArrayInputStream stream = new ByteArrayInputStream(signatures[i].toByteArray());
        X509Certificate cert = (X509Certificate) cf.generateCertificate(stream);       
        debuggable = cert.getSubjectX500Principal().equals(DEBUG_DN);
        if (debuggable)
            break;
    }
}
catch (NameNotFoundException e)
{
    //debuggable variable will remain false
}
catch (CertificateException e)
{
    //debuggable variable will remain false
}
return debuggable;
}
导入android.content.pm.Signature;
导入java.security.cert.CertificateException;
导入java.security.cert.x509证书;
私有静态最终X500主体调试\u DN=new X500主体(“CN=Android调试,O=Android,C=US”);
专用布尔值isDebuggable(上下文ctx)
{ 
布尔可调试=假;
尝试
{
PackageInfo pinfo=ctx.getPackageManager().getPackageInfo(ctx.getPackageName(),PackageManager.GET_签名);
签名[]=pinfo.signatures;
CertificateFactory cf=CertificateFactory.getInstance(“X.509”);
对于(int i=0;i
安卓系统要求所有应用程序在安装之前都必须使用证书进行数字签名。Android使用此证书来标识应用程序的作者,并且该证书不需要由证书颁发机构签名。Android应用程序通常使用自签名证书。应用程序开发人员持有证书的私钥

您可以在调试或发布模式下对应用程序进行签名。您在开发期间以调试模式登录应用程序,在准备分发应用程序时以发布模式登录应用程序。Android SDK生成一个证书,用于在调试模式下对应用程序进行签名。要在发布模式下对应用程序进行签名,您需要生成自己的证书

若要对应用程序进行签名以将其发布,请右键单击Project,转到Android工具,现在单击导出签名APK并按照流程进行操作,如果是第一次,则必须创建一个新的密钥库并在其中添加别名,完成所有过程后,Eclipse将为您提供一个签名APK,该APK以发布模式进行签名,现在,您必须保存该密钥库文件以供以后使用,例如,无论何时更新apk,您都必须使用相同的文件来导出新更新的apk

干杯 -阿曼