Nic*_*ckT 54 android android-manifest
我用远程接口编写了一个服务,并将其安装在我的PC的Eclipse AVD上.我有一个客户端测试工具,它启动并调用服务中的方法.最初我通过控件类和活动安装了服务,我现在已将其删除,因此服务的清单如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myname.gridservice"
android:versionCode="1"
android:versionName="1.0">
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<service
android:enabled="true"
android:debuggable="true"
android:name="OverlayService">
<intent-filter>
<action android:name="com.myname.OverlayService.SERVICE"/>
<action android:name="com.myname.gridservice.IRemoteInterface" />
</intent-filter>
</service>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
所以没有活动标签.
当我从Eclipse中的调试图标启动它时,控制台告诉我它正在安装apk(它是),但它不会显示为调试线程并且不会触发断点,尽管服务的行为是可以的客户看到了它.如果我将服务标签包装在具有关联类的活动标签中并启动它,那么我可以调试它
是否可以调试服务而不将其包装在活动中?
Bri*_*ney 79
以下是您可以通过四个步骤执行的操作:
第一:在你服务的第一个有趣的方法(我用于创建):
/* (non-Javadoc)
* @see android.app.Service#onCreate()
*/
@Override
public void onCreate() {
super.onCreate();
//whatever else you have to to here...
android.os.Debug.waitForDebugger(); // this line is key
}
Run Code Online (Sandbox Code Playgroud)
第二:在waitForDebuggerCommand之后设置断点.
第三:通过Eclipse中的调试按钮启动应用程序.(您现在应该已经从清单中删除了主要的启动活动)
上一篇:启动adb并运行命令以启动服务:
waitForDebuggercd $PLATFORM_TOOLSadb shellGil*_*son 22
只是确保你不要忘记你的代码中的这行代码并释放你的apk.如果您尝试在没有调试器的情况下运行应用程序,下面的行将会卡住.
android.os.Debug.waitForDebugger();
Run Code Online (Sandbox Code Playgroud)
您还可以使用以下内容来确定调试器是否已连接:
android.os.Debug.isDebuggerConnected(); //Determine if a debugger is currently attached.
Run Code Online (Sandbox Code Playgroud)
Sta*_*nd0 21
编辑2018按钮图标已更改
这很简单,您可以连接到您的应用程序服务.假设运行调试器不起作用,您可以按下上图所示的箭头图标调试按下选择过程选项.选择您的服务,您现在应该能够调试您的服务.
| 归档时间: |
|
| 查看次数: |
40712 次 |
| 最近记录: |