Android 项目已克隆,但 Google 地图无法在新计算机上运行
Android project cloned, but Google Maps doesn't work on new computer
我有一个使用 Google 地图 API 的 Android 应用程序项目。我需要将它克隆到另一台计算机,但它似乎无法在新计算机上运行。
报错信息如下:
E/Google地图AndroidAPI﹕授权失败。请参阅 https://developers.google.com/maps/documentation/android/start 了解如何正确设置地图。
E/Google 地图 Android API﹕ 在 Google 开发者控制台中 (https://console.developers.google.com)
确保 "Google Maps Android API v2" 已启用。
确保存在以下 Android 键:
API Key:MY API KEY(在旧电脑上有效)
我尝试生成一个新的 API 密钥并使用它,结果相同。
我尝试在 SDK 管理器中启用所有 Google 服务,结果相同。
有什么建议吗?
清单:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!--
不需要ACCESS_COARSE/FINE_LOCATION权限即可使用
Google 地图 Android API v2,但推荐使用。
-->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ExamineRoom"
android:label="@string/title_activity_examine_room" >
</activity>
<activity
android:name=".checkAvailable"
android:label="@string/title_activity_check_available" >
</activity>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps" >
</activity>
</application>
我假设您使用的是默认密钥库。因此,当您将项目克隆到另一台 PC 时。新 PC 上的默认密钥库与以前的不同。您要做的是生成一个新的 API 密钥。 Here可以找到详细教程
获取默认调试证书指纹。在此之前,您应该知道默认密钥库位于何处。
OS X 和 Linux: ~/.android/
Windows Vista 和 Windows 7: C:\Users\your_user_name.android\
对于mac请使用命令:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
对于 windows 使用这个:
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
输出应该是这样的:
Alias name: androiddebugkey
Creation date: Jan 01, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
MD5: AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
Signature algorithm name: SHA1withRSA
Version: 3
现在你得到了 SHA1:BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E: 44:5D:75
- 为这个新的 SHA1 获取一个新的 API 密钥(您之前已经完成了)
转到您的 Google 开发者控制台。使用 SHA1 代码和您的包名称生成新的 API 密钥。例如:
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75;com.example.android.mapexample
现在您获得了新的 API 密钥。在您的 AndroidManifest.xml 中更新它并将其放入元数据中:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="API_KEY"/>
完成所有这些后,您的地图将照原样显示。希望这篇 post 对您有所帮助。干杯。
我的建议是不要生成新密钥,而是对现有密钥添加新限制,在限制中输入相同的项目名称 'com.example.fruit.cucumber',然后提取新的 SHA1(从新设备) .然后按保存并重新构建,然后 运行 在新 PC 上创建您的项目。
我有一个使用 Google 地图 API 的 Android 应用程序项目。我需要将它克隆到另一台计算机,但它似乎无法在新计算机上运行。
报错信息如下: E/Google地图AndroidAPI﹕授权失败。请参阅 https://developers.google.com/maps/documentation/android/start 了解如何正确设置地图。 E/Google 地图 Android API﹕ 在 Google 开发者控制台中 (https://console.developers.google.com) 确保 "Google Maps Android API v2" 已启用。 确保存在以下 Android 键: API Key:MY API KEY(在旧电脑上有效)
我尝试生成一个新的 API 密钥并使用它,结果相同。 我尝试在 SDK 管理器中启用所有 Google 服务,结果相同。
有什么建议吗?
清单:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!--
不需要ACCESS_COARSE/FINE_LOCATION权限即可使用 Google 地图 Android API v2,但推荐使用。 -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ExamineRoom"
android:label="@string/title_activity_examine_room" >
</activity>
<activity
android:name=".checkAvailable"
android:label="@string/title_activity_check_available" >
</activity>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps" >
</activity>
</application>
我假设您使用的是默认密钥库。因此,当您将项目克隆到另一台 PC 时。新 PC 上的默认密钥库与以前的不同。您要做的是生成一个新的 API 密钥。 Here可以找到详细教程
获取默认调试证书指纹。在此之前,您应该知道默认密钥库位于何处。
OS X 和 Linux: ~/.android/ Windows Vista 和 Windows 7: C:\Users\your_user_name.android\
对于mac请使用命令:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
对于 windows 使用这个:
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
输出应该是这样的:
Alias name: androiddebugkey
Creation date: Jan 01, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
MD5: AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
Signature algorithm name: SHA1withRSA
Version: 3
现在你得到了 SHA1:BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E: 44:5D:75
- 为这个新的 SHA1 获取一个新的 API 密钥(您之前已经完成了)
转到您的 Google 开发者控制台。使用 SHA1 代码和您的包名称生成新的 API 密钥。例如:
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75;com.example.android.mapexample
现在您获得了新的 API 密钥。在您的 AndroidManifest.xml 中更新它并将其放入元数据中:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="API_KEY"/>
完成所有这些后,您的地图将照原样显示。希望这篇 post 对您有所帮助。干杯。
我的建议是不要生成新密钥,而是对现有密钥添加新限制,在限制中输入相同的项目名称 'com.example.fruit.cucumber',然后提取新的 SHA1(从新设备) .然后按保存并重新构建,然后 运行 在新 PC 上创建您的项目。