我写了一个基本的地图应用程序,一个可以用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一样
OpenGL版本应该不是问题,我在Galaxy Samsung S3和Galaxy Note 4上运行apk.
我把我的指纹都放在了用keytool检索的调试和发布版本,并与我的密钥库连接,所以关键没关系,你也可以看到参考图像,即使它说这是可选的.我把基础包和包含Maps活动的包放在一起只是为了确定.
我等待应用程序有足够的时间来获取位置,并在需要时传播指纹.
Manifest拥有检索粗略和精确位置的所有正确权限(请记住在AVD中一切正常)
我已经成功过去在Android上开发地图.我记得每次经过4或5次试验以及令人沮丧的过程中的错误,我都可以实现它.这次我不知道该怎么做.我正在进行说明,以了解我在哪里犯错误.
我终于找到了解决方案.
在新的AndroidStudio示例中,带有键的文件(google_maps_api.xml)已放置到app\src\debug\res\values文件夹中,另一个放在app\src\release\res\values中!
虽然AndroidStudio显示所有布局,所有值文件等,但只有一个带有键的值文件,所以我没有注意到文件系统中实际上有两个文件,其中一个没有设置密钥!我甚至没有现在可能有不同的文件夹.
我在这方面挣扎了好几天.每当我尝试创建一个简单的地图,某些内容被更改,弹出窗口并让我浪费时间时,就会发生这种情况.当你发现解决方案时,一切看起来都很明显,但与此同时它真的令人沮丧.
谢谢大家的帮助!我真的很感激.