Google 地图显示在模拟器上,但不显示在设备上

Google Maps showing on emulator, but not on a device

我写了一个基本的地图应用程序,可以用 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 徽标。但是没有标记,没有网格,没有按钮,没有别的。

为什么我认为它应该有效:

我过去已经成功地在 Android 上开发了一张地图。我记得每次在令人沮丧的过程中经过 4 或 5 次试验和错误后,我都能实现它。这次我不知道该怎么办了。我正在开发 S.O。了解我错在哪里。

您必须检查您要在设备上安装的应用。它应该使用发布密钥签名(而模拟器使用调试密钥)!

终于找到解决办法了

在新的 AndroidStudio 示例中,带有密钥 (google_maps_api.xml) 的文件已被放置到文件夹 app\src\debug\res\values,另一个在 app\src\release\res\values!

虽然 AndroidStudio 向您展示了所有布局、所有值文件等,但只有一个带键的值文件,所以我没有注意到文件系统中实际上有两个文件,一个带键没有设置!我什至现在都不知道可能有不同的文件夹。

我为此苦苦挣扎了几天。每次我尝试创建一个简单的地图时,都会发生这种情况,有些东西会发生变化,弹出窗口让我浪费时间。当您抓住解决方案时,一切似乎都那么明显,但与此同时,它真的很令人沮丧。

感谢大家的帮助!我真的很感激。