在windows上用AndroidStudio开发android时遇到了一个问题:
在XXX-java中报出提示:

Connected to the target VM, address: 'localhost:8601', transport: 'socket'

然后app进入等待状态然后黑屏了,无法进入调试。

解决1:

端口被占用,需要杀死对应进程,但实际上该端口是AndroidStudio在使用。如果同时用Eclipse和AndroidStudio同时进行android开发倒有这个可能,然而我只在使用AndroidStudio,故而此方法不适用。(确保adb是AndroidStudio的adb)

解决2:

in android studio: tools->android->enable adb integration(this should be checked) uncheck this, then check again. this solved me this problem. (it restarts the adb integration)。该方法来自stackoverflow,然而我试了之后还是没有用。

启示:

除了以上两种方法,网上能找到的方法我几乎都试过了一遍,然而并没有什么用。
虽然在尝试的过程中我也有思考,但是一直没法定位问题,尝试网上的方法感觉就是死马当活马医,急病乱投医。“知其然而不知其所以然”是经验主义奉行的,而这种方法不一定适用所有的场景,所以必须探究其所以然。

过程:

1、我首先摆出我的疑惑“这个项目名-java”是个什么东西,能不能禁用掉,然后一直在attach debugger to process中徘徊,但是没有效果。
2、然后我和能够正常调试的android app项目比较,确实这个“项目名-java”是个多出来的东西,但是不知道这是什么啊,想起项目中是有用到ndk的,于是合理猜想这是给ndk用的。
3、猜想后实践,在Project Structure的Build Type的jni debugger中设为true,然后开始调试,然后……没有用。
4、兜兜转转中看到Debug的Edit Configuration中有一个Debugger中有一个Build Type默认为Auto,于是改成Java就可以成功调试了。
5、一开始推理为其原因为,应该是开启了Debugger的Auto模式,那么Android Studio就同时开启了android的java调试以及ndk的native调试,而这两个使用的端口是一样的,于是出现了端口占用,因此每次只能进行Java调试或者ndk调试,不能用Auto模式。
6、但是项目中并没有实际的native的C/C++代码,只有一些.so的库文件。所以并没有定位出具体问题,但是肯定是跟ndk有关的。而自己新建Include C++的Android默认项目是可以正常调试的,但是项目结构上就有所不同了。所以大概是项目代码或者项目设置上哪里有问题吧。以后有时间再研究ndk开发的问题吧。

最终解决办法:Run->Edit Configuration->Debugger->Build Type设置为Java模式,则可以正常调试。

更多相关文章

  1. 学了一年的Android,还不会调试?你白学了!
  2. android 敏捷开发系列(一)——《啥是敏捷开发》
  3. Android项目--团购类客户端
  4. android 利用adb连接手机调试程序
  5. Android(安卓)项目开发填坑记 - 使用 MultiDex 解决 64K 限制
  6. androidx升级注意事项
  7. Android(安卓)Studio入门体验
  8. android 抛出“Unparsed aapt error(s)”
  9. Android(安卓)开发一定要看的15个实战项目

随机推荐

  1. UML详解:解析Android消息处理机制:Handler/
  2. android 三种定位方式
  3. android 使用JavaMail发送邮件
  4. 【Android】第21章 2D图形和动画
  5. 【Android(安卓)okhttp源码解析 二】同步
  6. Android(安卓)下拉框第三方控件 NiceSpin
  7. Android模拟点击的四种方式
  8. Adroid环境
  9. android viewpage的使用
  10. Android(安卓)分享文本和图片