Android谷歌地图v2签名apk无法正常工作

时间:2015-04-02 16:54:21

标签: android google-maps sha1 api-key

关于GoogleMaps Api Key和发布模式的另一个问题。

我有我的API密钥,在允许的Android应用程序中正确添加了SHA-1,在清单中复制了密钥,并在Android Studio中的google_maps_api.xml(调试,发布)中复制了密钥。 在调试中一切正常,但当我通过签名Apk安装应用程序时,它显示灰色屏幕和谷歌徽标。 谁知道我能做些什么呢? 任何帮助将非常感激。 这是我的AndroidManifest:

<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" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<permission
    android:name="com.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.permission.C2D_MESSAGE" />

<application
    android:name=".app.AppController"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".Welcome"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/FullscreenTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".MenuActivity"
        android:label="@string/title_activity_menu"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".GalleryActivity"
        android:label="@string/title_activity_gallery"
        android:screenOrientation="portrait" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.MainActivity" />
    </activity>
    <activity
        android:name=".TripActivity"
        android:label="@string/title_activity_trip"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".PromoActivity"
        android:label="@string/title_activity_promo"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".ContactActivity"
        android:label="@string/title_activity_contact"
        android:screenOrientation="portrait" >
    </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" />

4 个答案:

答案 0 :(得分:0)

您是否在xml代码中实现了这样的地图:

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

还在java中实现map?

GoogleMap googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.getUiSettings();
googleMap.getUiSettings().setZoomControlsEnabled(true);

有关Google地图here

的更多信息

如果您有任何疑问,请询问

<强>更新

这部分代码:

  <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" />

需要在地图所在的类的活动之后立即执行/

例如,如果地图位于Welcome类中,则清单应如下所示:

<permission
    android:name="com.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.permission.C2D_MESSAGE" />

<application
    android:name=".app.AppController"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".Welcome"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/FullscreenTheme" >
        <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.maps.v2.API_KEY"
        android:value="@string/google_maps_key" />

    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait" >
    </activity>

    <activity
        android:name=".MenuActivity"
        android:label="@string/title_activity_menu"
        android:screenOrientation="portrait" >
    </activity>

    <activity
        android:name=".GalleryActivity"
        android:label="@string/title_activity_gallery"
        android:screenOrientation="portrait" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.MainActivity" />
    </activity>
    <activity
        android:name=".TripActivity"
        android:label="@string/title_activity_trip"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".PromoActivity"
        android:label="@string/title_activity_promo"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".ContactActivity"
        android:label="@string/title_activity_contact"
        android:screenOrientation="portrait" >
    </activity>

<强>更新

检查您是否在Android sdk中更新了Google Play服务,如果您在dependencies添加了此行,请检查gradle:

compile 'com.google.android.gms:play-services:7.0.0'

答案 1 :(得分:0)

我认为你从机器A生成了SHA指纹密钥并在机器B中编译了你的android项目。这是你可能得到空白屏幕的原因之一。请在机器A中构建你的android项目。

答案 2 :(得分:0)

我想你错过了google play services。您需要拥有它才能使用Google Maps API v.2您可以从herehere获取它。

答案 3 :(得分:0)

我有同样的问题,我知道原因。

如果找到,请检查logcat:

   protected function _initBootstrap(){

    $this->bootstrap('layout');
    $layout = $this->getResource('layout');
    $view = $layout->getView();
    $view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper');
}

检查文件夹

中的文件.fill-height-or-more { min-height: 100%; display: flex; } .fill-height-or-more > div { -webkit-box-flex: 1; -webkit-flex: 1; -moz-box-flex: 1; -ms-flex: 1; flex: 1; display: flex; justify-content: center; flex-direction: column; align-items : center; } .some-area > div { padding: 1rem; } .some-area > div:nth-child(1) { background: #88cc66; } .some-area > div:nth-child(2) { background: #79b5d2; } .some-area > div:nth-child(3) { background: #8cbfd9; } .some-area > div h1, .some-area > div h2 { margin: 0 0 0.2rem 0; } .some-area > div p { margin: 0; } html, body { height: 100%; }

应用\ SRC \的调试 \ RES \ valuess 和 应用\ SRC \的释放 \ RES \值

对于debug来说,是另一个带有API的文件。