用C#连接到android模拟器

时间:2013-08-08 12:45:52

标签: c# android-emulator

我有一个.apk包,我想将它推入Android模拟器并在模拟器中运行,然后接收事件和调试消息以向用户显示C#控制台程序。
我应该如何连接到Android模拟器以从C#代码控制台接收调试消息? 请帮我。感谢。

1 个答案:

答案 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#非常相似,也许你可以为这个特定项目跳转语言?