Карты Google, отображаемые на эмуляторе, но не на устройстве

Я написал базовое приложение для карт, которое было легко создано с помощью AndroidStudio. Единственное отличие фрагмента загружается внутри другого пользовательского макета.

package com.wayl.activities;

import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import com.wayl.R;

public class MapsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        FragmentManager myFragmentManager = getSupportFragmentManager();
        SupportMapFragment mapFragment = (SupportMapFragment) myFragmentManager.findFragmentById(R.id.map);
        GoogleMap mMap = mapFragment.getMap();

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-35, 152);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker near Sidney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
[...]

Как было сказано выше, приложение отлично работает в AVD, но никак не может заставить его работать на реальном устройстве. Он показывает только пустой почтовый ящик и также есть яркий логотип Google.. Но никаких маркеров, нет сетки, никаких кнопок, ничего больше.

Почему я думаю, что он должен работать:

  • Сеть, Wi-Fi, в порядке, как на телефоне, так и на AVD

  • Версия OpenGL не должна быть проблемой, я запускаю apk как на Galaxy Samsung S3 и на Galaxy Note 4.

  • Я поместил свои отпечатки пальцев как для отладки, так и для выпуска версии, полученной с помощью keytool и связанного с моим хранилищем ключей, поэтому нажмите OK > , вы также можете увидеть ссылочный образ, даже если он сказал, что это необязательно. Я поместил как базовый пакет, так и пакет, содержащий активность Карт только для уверенности.

  • Я ждал достаточно времени для приложения для извлечения местоположения и для распространения отпечатка пальца в случае, если это потребуется.

  • В манифесте есть все правильное разрешение на получение грубого и мелкого местоположения (помните, что в AVD все работает отлично)

Мне уже удалось в прошлом разработать карту на Android. Я помню каждый раз после 4 или 5 проб и ошибок в процессе разочарования, я мог бы это достичь. На этот раз я не знаю, что делать дальше. Я исследую S.O. чтобы понять, где я ошибаюсь.

Ответ 1

Наконец я пришел к решению.

В новом примере AndroidStudio файл с ключом (google_maps_api.xml) помещен в папку app\src\debug\res\values ​​ и другой в приложении \src\release\res\values ​​!

Пока AndroidStudio показывает все макеты, все файлы значений и т.д., есть только один файл значения с ключом, поэтому я не мог заметить, что на самом деле в файловой системе было два файла: один с ключом не установлен! Я даже не мог для этого быть другой папкой.

Я несколько дней боролся с этим. Это происходит каждый раз, когда я пытаюсь создать простые карты, что-то меняется, всплывает и заставляет меня терять время. Когда вы поймаете решение, все кажется настолько очевидным, но пока что это действительно расстраивает.

Спасибо всем, кто помог! Я действительно оценил.

Ответ 2

Вам нужно проверить приложение, которое вы пытаетесь установить на устройство. Он должен быть подписан с ключом освобождения (в то время как эмулятор использует отладочный ключ)!