我写了一个基本的地图应用程序,可以用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徽标。但没有标记,没有网格,没有按钮,没有别的。
为什么我认为它应该有效:
网络,wifi,还可以,在手机上和AVD一样
The OpenGL version shouldn't be a problem,我正在运行apk Galaxy Samsung S3,以及Galaxy Note 4。
我将指纹放在用 keytool 检索的调试和发布版本并与我的密钥库连接,所以key it's OK,你也可以看到the reference image,甚至如果它说这是可选的。我把基础包和包含Maps活动的包放在一起只是为了确保。
我等待了the app to fetch the location足够的时间,以及指纹传播以防万一。
Manifest拥有检索粗略和精细位置的所有正确权限(请记住在AVD中一切正常)
我过去已经成功在Android上开发地图。我记得每次经过4或5次试验以及令人沮丧的过程中的错误,我都可以实现它。这次我不知道该怎么做。我正在开发S.O.了解我在哪里错误。
答案 0 :(得分:6)
我终于找到了解决方案。
在新的AndroidStudio示例中,带有密钥的文件( google_maps_api.xml )已放置到 app \ src \ debug \ res \ values 文件夹中,并且另一个在 app \ src \ release \ res \ values !
中虽然AndroidStudio会显示所有布局,所有值文件等,但只有一个带有密钥的值文件,所以我注意到文件系统中实际上有两个文件,一个没有设置密钥!我甚至没有现在可以有不同的文件夹。
我在这方面挣扎了好几天。每当我尝试创建一个简单的地图,某些内容被更改,弹出窗口并让我浪费时间时,就会发生这种情况。当你发现解决方案时,一切看起来都很明显,但与此同时它真的令人沮丧。
谢谢大家的帮助!我真的很感激。
答案 1 :(得分:1)
您必须检查您尝试在设备上安装的应用。它应该使用release key进行签名(模拟器使用调试密钥)!