我在我的应用程序中使用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文件中。
我需要将其放在项目目录或发布目录中,然后在清单文件中指定该字符串,而不是在调试目录下。这就是我遇到的问题。谢谢那些评论您的人。

09-10 06:22
查看更多