我知道这是一个常见问题,通常解决方案是生成一个单独的密钥以便发布。我已经完成了几次,我在开发人员控制台中的API密钥包含两个不同的SHA1指纹:一个用于从AndroidStudio调试,另一个用于从我自己的密钥库发布。我已使用相同的密钥库对应用进行了签名,并在控制台中启用了Google Maps Android API v2。但是地图活动仍然只显示左下角带有“Google”的白色屏幕。
有没有建议如何解决问题?
答案 0 :(得分:62)
听起来您只在调试google_maps_api.xml中输入了API密钥。此外,听起来您使用相同的API密钥进行调试和发布,但您仍需要在release文件夹下的google_maps_api.xml以及debug文件夹中输入它。
这有点令人困惑,因为当项目在Android视图中时,您只能看到调试文件(尽管在该视图中旁边的括号中应该有(debug)
)。
要修改发布版本,请使用Project Explorer左上角的下拉列表切换到Project视图。然后,展开app/src/
,您会看到子文件夹debug
和release
。在那里,您应该会在debug/res/values
和release/res/values
下看到两个单独的google_maps_api.xml文件。
确保API密钥填充在release/res/values
文件夹下的google_maps_api.xml文件中,因为这是将用于签名版本的apk。
答案 1 :(得分:19)
如果您选择 Google Play App Signing ,那么您的应用SHA-1
将会在发布后与其不同。
由于Google会删除您上传的证书,然后使用新的证书对其进行签名,
所以你必须知道新的SHA-1
密钥。
(您不必按照日志发布并跟踪新生成的SHA-1
)
您可以比较2 SHA-1
个键。
答案 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)
我做了很多事来解决这些问题,但任何解决方案都无法解决我的问题 解决这些问题我做了这些事情
你应该从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)
现在通过执行这些操作,您将获得密钥
答案 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 进行更改。
如果它对您不起作用,请添加并尝试。