Карты 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
Вам нужно проверить приложение, которое вы пытаетесь установить на устройство. Он должен быть подписан с ключом освобождения (в то время как эмулятор использует отладочный ключ)!