我在我的应用程序中使用Google API,但只能获取debug ssh才能与Google API一起使用。
我有一个用于签名的密钥库,过去与以前的应用程序相同,也没有问题。我还启用了所有API。我正在使用发布APK签署我的应用程序。我正在使用SSH1中该发行版APK中的SSH1作为Google API凭据。我在应用程序中使用了Google的密钥。我已经阅读了所有有关堆栈溢出和google docs的文档,并且已经尝试了几乎所有内容,但是我无法使其正常工作。
它仅在调试应用程序时有效(在这种情况下,我将使用调试密钥库生成的SSH1和与该SSH1一起使用的密钥)。
但是,当我与他人签名时,发布密钥库并在应用商店上的Beta版中发布并下载到手机上时,会收到以下错误消息:API密钥无效。这是我的清单文件和构建文件以及布局文件(如果有帮助的话)。谢谢。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dev.cromer.jason.whatsappening" >
<permission android:name="com.dev.cromer.jason.whatsappening.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.dev.cromer.jason.whatsappening.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<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" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:allowBackup="true"
android:fullBackupContent="true"
android:icon="@drawable/icon_logo"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".activities.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>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".activities.MapActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name=".activities.SetMarkerTitleActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name=".activities.SearchPlaceActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name=".activities.SetMarkerDescriptionActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name=".activities.MarkerDescriptionActivity"
android:label="@string/app_name" >
</activity>
</application>
</manifest>
这是我的构建:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.dev.cromer.jason.whatsappening"
minSdkVersion 15
targetSdkVersion 23
versionCode 12
versionName "1.012"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.google.android.gms:play-services:7.8.0'
}
和我的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/AppTheme">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"
tools:context="com.dev.cromer.jason.whatsappening.activities.MapActivity"
android:name="com.google.android.gms.maps.SupportMapFragment">
</fragment>
<EditText
android:id="@+id/searchBarEditText"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:background="@drawable/textview_border"
android:alpha=".8"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:hint="@string/search_bar_hint"
android:singleLine="true"
android:textColor="#000000"
android:padding="8dp" />
<ImageView
android:id="@+id/poweredBy"
android:contentDescription="@string/powered_by_google_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/powered_by_google_light"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
最佳答案
更新:
原来,我的API密钥存储在项目的调试目录下的资源xml文件中。
我需要将其放在项目目录或发布目录中,然后在清单文件中指定该字符串,而不是在调试目录下。这就是我遇到的问题。谢谢那些评论您的人。