Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[原文发表地址] Debug JNI Android Applications using Visual C++ Cross-Platform Mobile
[原文发表时间] 2014/12/12 4:22PM
之前我们已经介绍了,开发人员能够在Visual Studio 2015 preview(在这里下载)中使用Visual C++创建跨平台移动应用程序。特别是对于Android平台而言,这项功能的引入使得开发人员能够创建Native-Activity 应用程序,涵盖一系列功能的动态和静态的本地应用程序,提供快速,精确,以及平滑的编辑-〉编译-〉调试开发迭代循环。本博客着重给出如何使用Visual Studio调试器去调试预编译好的,甚至是那些未曾在Visual Studio中编译过的本地android应用程序(Native Activity 和 JNI)。
调试预编译的JNI代码
为了证明这个,我们从一个预编译的JNI应用程序包文件开始。为此,本博客中我们将使用Native-Audio Android应用程序,它是Android本地开发套件(NDK)的一部分(在这里下载)。如果需要,应用程序的预编译版本和源文件已作为本博客的一部分附上。在这种情况下,这个APK文件已经由作为Android SDK Bundle一部分的 Eclipse Android集成环境编译。另外,还需注意,无论你用什么工具来编写本地代码(gcc或clang),只要你能生成APK调试信息(NDK_DEBUG=1和
manifest中的android:debuggable=”true”)。就上面说的,让我们开始吧!
为了调试这个预编译的JNI Android应用程序,我们需要创建一个dummy工程,这个工程允许我们利用VS的部署引擎对预编译的APK部署并开始调试。对于这个Dummy工程,我们使用动态共享库 (Android) 模板建立。
当一个简单的动态共享库(Android)工程创建后,‘配置属性’下的调试属性页就会自动配置(如下图所示)。
用户需要填写以下信息:
- 要启动的包: 包含.apk名字的.apk文件的路径(例如:C:\DebugAPK\NativeAudio.apk)
- 包名: Android 应用程序的Java包的名字,这个信息可以在‘androidmanifest.xml’文件中找到。(例如:com.example.nativeaudio )。 更多信息请看以下例子的配置。
- 启动活动: 启动活动的名字,这个信息可以在‘androidmanifest.xml’文件中找到。(例如:NativeAudio)
启动的活动(如:NativeAudio)和包名(com.example.nativeaudio)都可以从AndroidManifest.xml(如下图)获得,并作为NativeAudio NDK的一部分。
如果不能访问AndroidManifest.xml,可以通过另外一种方法在预编译的.apk文件使用aapt工具获得详细信息。Aapt可以在android-sdk中找到,构建工具目录并执行以下命令将在aapt中得到一个包含包值和活动名的xml树的结果。
aapt dump --values xmltree NativeAudio.apk AndroidManifest.xml
我们现在在调试属性页面中设置manifest详细信息并开始调试本地程序代码。在之后发布的版本中我们计划把这一过程自动化,用户无需在调试属性页面中填写这些信息。而且请注意目前我们只支持源代码本地部分的调试。为了开始调试我们需要在配置管理器中设置一些属性。
在配置管理器中进行配置,取消编译项目属性,选择部署属性。一旦选择了部署属性,按F5,之前编译好的.apk将会部署在Device/Emulator上,我们就可以模仿调试了。
最后我们需要做的是在VS中打开需要调试的代码,设置断点开始调试。利用‘添加-〉已有项目’对话框载入代码到你的项目中,并按F5进行调试。
总结
本博客应该让您了解了如何使用Visual Studio调试预编译好的android应用程序包的一些知识。根据您的反馈,我们将在本博客上更新更深层次的关键功能。如果您希望和我们讨论一些特别的话题,请让我们知道。提醒下,发布这个Preview版本的目的是收集大家反馈并向大家学习。我们正在考虑将来也支持其他平台,您的反馈对塑造我们的产品的方向是至关重要的。
分享反馈是很容易的!功能的建议请写到用户之声,提交发现的缺陷请到我们的网站连接或者在IDE中发送表情笑脸或者皱眉给我们。您也可以在下面评论。另外,如果您想直接和我们这个主题的产品团队对话,请发邮件到(aasthan@microsoft.com)。我们很希望从您那得到更多并和您建立联系。




