Google地图未在签名的apk中显示

时间:2015-09-12 23:20:16

标签: android google-maps release

我知道这是一个常见问题,通常解决方案是生成一个单独的密钥以便发布。我已经完成了几次,我在开发人员控制台中的API密钥包含两个不同的SHA1指纹:一个用于从AndroidStudio调试,另一个用于从我自己的密钥库发布。我已使用相同的密钥库对应用进行了签名,并在控制台中启用了Google Maps Android API v2。但是地图活动仍然只显示左下角带有“Google”的白色屏幕。

有没有建议如何解决问题?

6 个答案:

答案 0 :(得分:62)

听起来您只在调试google_maps_api.xml中输入了API密钥。此外,听起来您使用相同的API密钥进行调试和发布,但您仍需要在release文件夹下的google_maps_api.xml以及debug文件夹中输入它。

这有点令人困惑,因为当项目在Android视图中时,您只能看到调试文件(尽管在该视图中旁边的括号中应该有(debug))。

要修改发布版本,请使用Project Explorer左上角的下拉列表切换到Project视图。然后,展开app/src/,您会看到子文件夹debugrelease。在那里,您应该会在debug/res/valuesrelease/res/values下看到两个单独的google_maps_api.xml文件。

确保API密钥填充在release/res/values文件夹下的google_maps_api.xml文件中,因为这是将用于签名版本的apk。

enter image description here

答案 1 :(得分:19)

如果您选择 Google Play App Signing ,那么您的应用SHA-1将会在发布后与其不同。

由于Google会删除您上传的证书,然后使用新的证书对其进行签名,

所以你必须知道新的SHA-1密钥。

(您不必按照日志发布并跟踪新生成的SHA-1

enter image description here

您可以比较2 SHA-1个键。

Origin answer

答案 2 :(得分:0)

您使用的是sha1版本。在进行apk签名后,您需要使用命令提示符再次生成SHA1。

重新生成SHA1的步骤是转到cmd并提供如下命令:

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

                    int pos = parent.getPositionForView(v);
                    Toast.makeText(getApplicationContext(),pos+"",Toast.LENGTH_SHORT).show();

                    PopupMenu popup = new PopupMenu(MainActivity.this, v);
                    popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
    //         
                    popup.show();

                }

            });

“C:\您的密钥库路径\ keystores \ android.jks”

1)在程序文件中打开你的java,打开java版本,如jre1.8.0

2)打开bin文件夹并按照生成签名apk时生成的密钥存储路径的方式运行上面的命令 在cmd上运行此命令后,您需要提供已签名应用程序的密码,并且您的SHA1将被重新标记。

3)将sha1复制并粘贴到console.developer中,并在api密钥中输入您的包名。

答案 3 :(得分:0)

我做了很多事来解决这些问题,但任何解决方案都无法解决我的问题 解决这些问题我做了这些事情

  1. 使用新的密钥库文件创建已签名的apk,确保您将在发布模式下创建
  2. 创建签名后的apk,您应该注意保存密钥库文件的密钥库路径。
  3. 您还需要在发布模式和调试模式下使用Google地图API密钥,您可以同时使用相同的API密钥,但请确保在Google控制台上为您的单个api密钥添加两个不同的sha密钥。
  4. 你应该从c盘开始使用java的bin文件夹的路径,因为keystore工具在bin文件夹里面所以 假设您的文件类似于C:\ Program Files \ Java \ jdk1.8.0_11 \ bin 所以你应该按照这个路径到你的android工作室终端 将路径更改为C:\ Program Files \ Java \ jdk1.8.0_11 \ bin 然后键入以下命令:

    keytool -list -v -keystore "/Users/NT/Desktop/generalkey.jks"(adress of your keystore file)
    
  5. 现在通过执行这些操作,您将获得密钥

  6. 的sha密钥副本
  7. 转到Google控制台/凭据
  8. 现在转到你的api你会看到编辑选项去编辑并将你的sha键输入它并保存。
  9. 运行您的代码。

答案 4 :(得分:0)

现在回答还为时已晚,但是如果其他人都提出相同的问题,可能会对他们有所帮助。

如果在发行版中添加密钥无效,请检查jks文件中的SHA密钥,然后在Google Play google api console中添加相同的密钥

要发布SHA,请打开终端并输入

Asad-MacBook-Air:~ asad$ keytool -list -v -keystore /your/path/keystore.jks

然后检查SHA,它应该与google api控制台中使用的相同。

答案 5 :(得分:0)

我通过查看左侧菜单配置中的 https://play.google.com/console 解决了该问题,然后查看应用程序的完整性并复制应用签名密钥的 SHA1 证书下方的上传密钥证书的 SHA1 并将其添加到相同的https://console.cloud.google.com/ 的 api 密钥。这样我就不必对 apk 进行更改。

如果它对您不起作用,请添加并尝试。