我创建了一个地图应用程序。它显示地图而不签署APK但是当我尝试签名并稍后在设备中安装该APK时,地图不再显示。
答案 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密钥需要在每台服务器上都是唯一的。
答案 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);
}
}
}