我有一个.apk包,我想将它推入Android模拟器并在模拟器中运行,然后接收事件和调试消息以向用户显示C#控制台程序。
我应该如何连接到Android模拟器以从C#代码控制台接收调试消息?
请帮我。感谢。
答案 0 :(得分:2)
这取决于您想要多少细节。您只是想查看logcat或获取完整的调试信息(如断点和设备统计信息)?
对于前者:
您可以使用adb(Android Debug Bridge):
ProcessStartInfo adbStart = new ProcessStartInfo(@"your_path\android-sdk\platform-tools\adb.exe", "-e logcat *:D");
adbStart.UseShellExecute = false;
Process adb = new Process() { StartInfo = adbStart };
adb.Start();
将adbStart
的构造函数中的第一个参数替换为adb.exe的路径,该路径位于Android SDK的platform_tools
文件夹中。第二个参数是控制台标志。上面的代码强制adb仅使用-e
标志连接到模拟器,并过滤仅使用*:D
标志调试消息。您应该将*
替换为您的应用的相关过滤器(例如包名称)。只需在控制台中输入adb help
即可查看不同标志的信息。
由于您的程序在控制台中运行,因此adb的标准输出应该定向到您的控制台。如果不是,请使用StreamReader
上的adb.StandardOutput
来读取adb的输出。您可以使用adb.WaitForExit()
来阻止线程,直到adb死亡。
对于后者:
这样做的官方方法是通过Dalvik Debug Monitor(android_sdk \ tools \ ddms.bat)。由于android中没有对C#的官方支持,因此调试监视器是用Java编写的,lib也是如此。对不起,我找不到任何替代品。 Java与C#非常相似,也许你可以为这个特定项目跳转语言?