如何在已签名的Android应用程序上获取Map?

时间:2011-03-07 07:49:05

标签: android map

我创建了一个地图应用程序。它显示地图而不签署APK但是当我尝试签名并稍后在设备中安装该APK时,地图不再显示。

6 个答案:

答案 0 :(得分:3)

您需要单独的Google Maps API密钥才能发布。你说你在工作时没有签署APK,但是应用程序实际上是由SDK使用调试密钥自动签名的。这可能也是您拥有有效Google Maps API密钥的密钥。

来自https://code.google.com/android/add-ons/google-apis/mapkey.html的文档:

  

在开发和调试时   你的申请,你可能会   在调试中签署您的应用程序   模式 - 即SDK构建工具   会自动签名   使用调试的应用程序   证书。让你的MapView   元素正确显示地图数据   在此期间,你应该获得   注册的临时Maps API密钥   调试证书。为此,你   首先需要获得MD5指纹   调试证书。当你是   准备好发布你的应用程序了   必须注册您的发布证书   使用Google地图服务和   获取新的Maps API密钥。你必须   然后更改MapView元素   您的应用程序引用新的   API密钥。

答案 1 :(得分:0)

你在两个地方使用相同的api密钥吗?因为api密钥需要在每台服务器上都是唯一的。

http://code.google.com/apis/maps/signup.html

答案 2 :(得分:0)

您应该使用将在签名时生成的releasekey文件生成另一个apiKey。 您将使用以下
获得新的MD5密钥 keytool -list -keystore c:\ Users \ Sudheesh \ releasekey relesekey是包含符号释放键的文件。 通过使用此MD5密钥,您可以从http://www.mobisoftinfotech.com/blog/android/android-mapview-generate-api-key-using-java-keytool/生成api密钥 在您的应用中使用此apikey。

答案 3 :(得分:0)

以这种方式做得更好

Select the project in workspace-->rightclick---> click export--->export android apps-->next-->next--->enter keystore file name--->next--->enter key alis--->finish

(请参阅此here

答案 4 :(得分:0)

就像RogerKK所说的那样,你是如何进行测试/部署的? 如果您最初针对连接的Android设备调试应用程序,则很可能使用调试证书SHA-1生成密钥。如果您尝试进行发布版本,则需要一个完全不同的密钥。

这是我经历的,但使用调试证书进行签名。

http://www.digitalopium.com/android-google-maps-api-tutorial/

答案 5 :(得分:0)

对于所有遇到nirav patel同样问题的朋友。

您可以使用以下代码查找已签名和未签名的哈希键

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try

        {

            PackageInfo info = getPackageManager().getPackageInfo("Your package name here",PackageManager.GET_SIGNATURE);

            for (Signature signature : info.signatures)
            {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } 
        catch (NameNotFoundException e)
        {
            System.out.println("name not found...."+e);
        } catch (NoSuchAlgorithmException e) 
        {
            System.out.println("NoSuchAlgorithmException...."+e);
        }
    }
}