【发布时间】:2011-07-10 04:23:37
【问题描述】:
我创建了一个地图应用程序。它在没有签署 APK 的情况下显示地图,但是当我尝试签署并稍后在设备中安装该 APK 时,地图不再显示。
【问题讨论】:
我创建了一个地图应用程序。它在没有签署 APK 的情况下显示地图,但是当我尝试签署并稍后在设备中安装该 APK 时,地图不再显示。
【问题讨论】:
您需要一个单独的 Google Maps API 密钥才能发布。您说您在 APK 工作时没有对其进行签名,但应用程序实际上是由您的 SDK 使用调试密钥自动签名的。这可能也是您拥有有效 Google Maps API 密钥的那个。
来自https://code.google.com/android/add-ons/google-apis/mapkey.html的文档:
在开发和调试时 您的申请,您可能会 在调试中为您的应用程序签名 模式——即 SDK 构建工具 将自动签署您的 使用调试的应用程序 证书。让您的 MapView 元素正确显示地图数据 在此期间,您应该获得 注册到的临时 Maps API 密钥 调试证书。为此,您 首先需要获取MD5指纹 的调试证书。当你在 准备发布你的应用程序,你 必须注册您的发布证书 使用谷歌地图服务和 获取新的 Maps API 密钥。你必须 然后更改 MapView 元素 您的申请以引用新的 API 密钥。
【讨论】:
您是否在两个地方使用了相同的 api 密钥?因为每个服务器上的 api key 需要是唯一的。
【讨论】:
您应该使用将在签名时生成的 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。
【讨论】:
这样比较好
Select the project in workspace-->rightclick---> click export--->export android apps-->next-->next--->enter keystore file name--->next--->enter key alis--->finish
(请看这个here)
【讨论】:
就像 RogerKK 所说的那样,您的测试/部署如何? 如果您最初针对已连接的 Android 设备调试应用程序,则很可能是使用调试证书 SHA-1 生成的密钥。如果您尝试进行发布构建,则需要完全不同的密钥。
这是我所经历的,但使用调试证书进行签名。
http://www.digitalopium.com/android-google-maps-api-tutorial/
【讨论】:
对于所有面临与 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);
}
}
}
【讨论】: