如何获取已签名Android应用程序的地图?

问题描述:

我已经创建了一个地图应用程序。它显示地图时未签署APK,但在尝试签名并稍后在设备中安装APK时,地图不再显示。如何获取已签名Android应用程序的地图?

+1

雇用一个声乐教练?但严重的是你遵循了什么步骤?,你的问题是[模糊](http://code.google.com/android/maps-api-signup.html) – Reno 2011-03-07 07:55:13

+1

很确定你是[同一个人](http:///*.com/questions/5217139/how-to-get-map-on-signed-android-application)谁想唱歌。垃圾邮件相同的问题不会帮助。 – Reno 2011-03-07 08:35:27

+1

如果你可以和你的同事交谈,这样你就不会同时提出同样的问题,那将不胜感激...... – 2011-03-07 09:11:21

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

从文档在https://code.google.com/android/add-ons/google-apis/mapkey.html

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

+0

如果这不是问题,我还会遇到一些其他可能相关的奇怪行为,描述在http://www.kind-kristiansen.no/2010/android-map-tiles-not-loading-and-possible-fixes/ – rogerkk 2011-03-07 08:00:05

+0

我已经使用this.beu,即使我无法获得地图。 – 2011-03-07 08:16:49

+0

你在logcat中遇到什么错误? – rogerkk 2011-03-07 08:28:23

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

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

+0

是的,当我创建apk文件时,我使用了相同的API密钥 – dilipkaklotar 2011-03-07 08:56:21

+0

请为其他服务器创建一个新的API密钥。你不能在每个上使用相同的API密钥。 – Luci 2011-04-01 08:03:35

您应该生成使用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帕特尔也有同样问题的所有朋友。

您可以使用下面的代码来找到符号和无符号哈希键

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); 
     } 
    } 
}