获取地图API密钥:Android

获取地图API密钥:Android,android,google-maps,Android,Google Maps,我按照此链接生成证书的MD5指纹 我也看到了以下线索: 我正在使用Windows xp操作系统。debug.keystore位于C:\Documents and Settings\Admin.android\debug.keystore 但在cmd提示符上,它给出了未找到的响应网络路径 请指导我如何生成MD5摘要 我也想知道调试键的区别是什么 释放 钥匙??这是两把不同的钥匙吗??如果是,那么 怎么 我可以生成它们吗 我们是否可以采用相同的调试和发布方式 不同机器上的钥匙 在系统上找到de

我按照此链接生成证书的MD5指纹

我也看到了以下线索:

我正在使用Windows xp操作系统。debug.keystore位于C:\Documents and Settings\Admin.android\debug.keystore

但在cmd提示符上,它给出了未找到的响应网络路径

  • 请指导我如何生成MD5摘要

  • 我也想知道调试键的区别是什么 释放

    钥匙??这是两把不同的钥匙吗??如果是,那么 怎么 我可以生成它们吗

  • 我们是否可以采用相同的调试和发布方式 不同机器上的钥匙

    • 在系统上找到debug.keystore。它通常位于windows上的
      USER\u HOME\Local Settings\Application Data\.android
      文件夹中

    • 使用keytool实用程序生成证书指纹(MD5)。默认JDK安装附带的keytool实用程序

      C:>keytool-list-alias androiddebugkey-keystore.android\debug.keystore-storepassandroid-keypassandroid

    可以根据调试证书获取临时映射API密钥,但在发布应用程序之前,必须根据发布证书注册新密钥,并相应地更新MapView中的引用

    如果应用程序访问服务或使用要求您使用基于私钥的密钥的第三方库,则您可能还必须获取其他释放密钥。例如,如果应用程序使用MapView类(它是Google Maps外部库的一部分),则需要向Google Maps服务注册应用程序并获取Maps API密钥。有关获取Maps API密钥的信息,请参阅获取Maps API密钥


    获取调试签名,如下所述

    $ keytool -list -keystore ~/.android/debug.keystore
    ...
    Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
    
    或者最好使用从
    sigs[i].hashCode()获得的代码
    
    那么这个util func也可能有帮助

    static final int DEBUG_SIGNATURE_HASH = 695334320;// value shpuld be the one you get above
        public static boolean isDebugBuild(Context context) {
    
                boolean _isDebugBuild = false;
                try {
                    Signature [] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
    
                    Log.d(TAG, "DEBUG_SIGNATURE_HASH->"+DEBUG_SIGNATURE_HASH);
                    for (int i = 0; i < sigs.length; i++) {
                        Log.d(TAG, i+"->"+sigs[i].hashCode());
                        if ( sigs[i].hashCode() == DEBUG_SIGNATURE_HASH ) {
                            Log.d(TAG, "This is a debug build!");
                            _isDebugBuild = true;
                            break;
                        }
                    }
                } catch (NameNotFoundException e) {
                    e.printStackTrace();
                }      
    
                return _isDebugBuild;
            }
    
    static final int DEBUG\u SIGNATURE\u HASH=695334320;//值应该是您在上面得到的值
    公共静态布尔值isDebugBuild(上下文){
    布尔值_isDebugBuild=false;
    试一试{
    签名[]sigs=context.getPackageManager().getPackageInfo(context.getPackageName(),PackageManager.GET_SIGNATURES);
    Log.d(标记“DEBUG\u SIGNATURE\u HASH->”+DEBUG\u SIGNATURE\u HASH);
    对于(int i=0;i”+sigs[i].hashCode());
    if(sigs[i].hashCode()==DEBUG\u SIGNATURE\u HASH){
    d(标记“这是一个调试版本!”);
    _isDebugBuild=true;
    打破
    }
    }
    }catch(nameNotFounde异常){
    e、 printStackTrace();
    }      
    返回(isDebugBuild);;
    }
    
    @Padma Kumar:是的,我生成了md5证书,但我对调试密钥和发布密钥仍有疑问。请参阅:发布密钥是用于签署应用程序的密钥,允许您将应用程序上载到Android Market。调试键用于在测试设备/仿真器时“推送”应用程序。为了获得MD5证书,您需要使用调试密钥而不是发布密钥。@Siddhartlele:谢谢您的回复:好的,这样我就可以使用其他密钥来签名n导出我的应用程序??关于我的第三个问题,请给我一些指导。我不确定是否在不同的机器上为Maps API使用不同的调试键。但是您当然不需要使用不同的释放密钥。事实上,建议您将释放密钥存储在安全的地方。使用特定的发布密钥对应用程序进行签名后,只有该密钥才能用于为应用程序提供后续更新。同样,关于调试键,我真的不知道它是如何工作的。谢谢@warenija:plz回答我的第三个问题当然欢迎。不幸的是,我对第三个问题没有明确的答案,让我尽我所知尝试一下;每台机器仅调试密钥更改,已签名应用的释放密钥相同。这就是为什么我会更新每台机器的调试密钥,并相应地检查isDebugBuild。