本文主要是介绍Android调试之断点进程选择,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
调试需要注意选对进程,有时代码调试断点时,并非表面看起来所在包进程
例如:Status.java
/packages/apps/Settings/src/com/android/settings/deviceinfo/Status.java
代码路径在Settings中,默认以为是com.android.settings进程,发现断点处竟然是勾选上的。
但是点击About phone-> Status发现并不能断到断点处。
查询源码发现对应的Activity为Settings$StatusActivity,再看AndroidMenifest文件得到了答案,其被指定了别的进程,即com.android.phone。
/packages/apps/Settings/res/xml/device_info_settings.xml
<PreferenceScreen android:key="status_info"android:title="@string/device_status"android:summary="@string/device_status_summary"><intent android:action="android.intent.action.MAIN"android:targetPackage="com.android.settings"android:targetClass="com.android.settings.Settings$StatusActivity" /></PreferenceScreen>
/packages/apps/Settings/AndroidManifest.xml
<!-- Runs in the phone process since it needs access to the Phone object --><activity android:name=".Settings$StatusActivity"android:label="@string/device_status_activity_title"android:theme="@style/Theme.SubSettingsDialogWhenLarge"android:process="com.android.phone"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.VOICE_LAUNCH" /></intent-filter><meta-data android:name="com.android.settings.FRAGMENT_CLASS"android:value="com.android.settings.deviceinfo.Status" /></activity>
调试时,需要断com.android.phone才行,效果如下。
[小结]
因此,调试时需要特别注意相关声明,以及其跑的上下文。
这篇关于Android调试之断点进程选择的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!