我写了一些程序,它从主机获取流数据。我使用了这个例子:https://code.google.com/p/streamscraper/它在我的Android虚拟设备(2.3.3 API级别10)上运行良好,但是当我创建.apk并安装在Galaxy S4和LG P710上时,我收到错误unfortunately, has stopped
。 怎么了?如何调试?
根据您的评论,您会得到android.os.NetworkOnMainThreadException
的异常: 在新的Android API中,您应该将访问网络或互联网的任何代码放在不同的线程中。
试试这个
new Thread(new Runnable() {
@Override
public void run() {
//Put your code here
}
}).start();
编辑 1:您可以使用 Android 附带的任何后台线程结构。服务中的线程,线程(如前所述)或AsyncTask。每个人都有优点和缺点。你应该对此进行调查。小提示,如果您在此活动中播放此内容并以某种方式访问活动用户界面,请使用 AsycnTask。
要在设备上调试它,您必须在智能手机设备上使用 ADB。为此,请在设备上启用USB Debugging
,将其连接到计算机并确保(如果在Windows
上)安装了USB
驱动程序。最后启动Eclipse
或Android Studio
并在调试模式下启动项目。您应该会看到一个控制台输出,其中可以看到设备的完整堆栈跟踪。
如果您无法<>智能手机使用计算机进行调试,请尝试使用 BugSense。它是免费的,并将其库包含在您的项目中,如果确实发生错误,它会向您发送完整的堆栈跟踪。
设置您的设备确实是可调试的:链接。
从 Eclipse 开始调试,选择您的设备。
检查 Eclipse 中LogCat
视图中的输出。在那里,您将看到异常堆栈跟踪。
为什么不直接在设备上运行apk文件,而是在模拟器上运行。??
已设置的清单文件中检查此内容
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />