Android进化之旅(一):我竟然无法真机调试了!

在我用真机调试的一年半后,我竟然无法进行真机调试了!
在我手机系统更新的这段时间,我决定写一系列关于Android的BUG修复教程。

关键词

Android、真机调试、高德

问题描述

现象描述

连接到真机后,点击调试按钮,安装成功后直接闪退。

报错

Waiting for process to come online...
Timed out waiting for process to appear on 我的手机

问题分析

尝试1:

操作

我本以为是某些代码导致的闪退,但是他竟然没有丝毫的红字,我哭了!我修改了AndroidManifest.xml文件中的权限申请以及service。

结果

无丝毫变化,依旧出现这个问题。

尝试2:

https://www.cnblogs.com/gxt-/p/7757716.html
我在百度搜到了这篇博客,在我准备尝试的时候我不小心把手机系统更新了,,,等待更新ing…
我哭了,这系统更新完也太丑了!!!

操作

按照博客所说,点击菜单中的 “File” -> “Invalidate Caches / Restart”,然后点击对话框中的 “Invalidate and Restart”。

结果

无丝毫变化,依旧出现这个问题。

尝试3:

操作

我决定新建一个项目,看看是否与我导入高德sdk的操作有关,还是与AndroidStudio有关。

结果

好的,结果告诉我不是AndroidStudio的问题,应该是导入高德包出现了问题。

尝试4:

操作

当我发现我的问题既然不是在AndroidStudio上,那应该还是在代码上,虽然我第一个就否决了他,但是我决定删掉一些不一样的代码。我将java文件中的有关高德地图的调用代码全部注释掉。

结果

我去!真的是因为这个,但是具体原因还不知为什么,需要我深入探索。

操作

接下来我对这些代码按照模块取消注释,我发现了问题所在。

@Override
protected void onResume(){
    super.onResume();
    mapView.onResume();
}

只要这几行代码在就会出现上述问题。onResume()在Activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用)。
所以我判断这与代码初始化有关,我怀疑和这个有关aMap = mapView.getMap();,我重新查找了如何调用高德地图,果不其然,是我在xml文件中的组件写的不正确,导致获取的组件无效。

解决方案:

MapView修改为com.amap.api.maps.MapView

//修改前:
<MapView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/map"/>
//修改后:
<com.amap.api.maps.MapView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/map"/>
发布了16 篇原创文章 · 获赞 11 · 访问量 1141

猜你喜欢

转载自blog.csdn.net/bjtu_linxinyu/article/details/104036869