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.
[原文发表地址]Developing Native-Activity (Android) applications
[原文发表时间]2014/12/5 8:05AM
概述
Visual Studio 2015 预览版(从这里下载)增加了一种功能,作为跨平台移动开发的一部分,即开发人员可以创建安卓Native Activity应用。安卓跨平台中的安卓Native Activity (API 级别为 9)增加了创建纯粹的C/C++应用的功能。同时在后台还有一些隐藏的Java JNI代码,这些设计是为了抽象细节信息,并让细节信息远离开发者。Native Activity应用很受游戏(例如虚幻4)以及图形密集型(OpenGL)应用的欢迎。这篇博文将引导您体验创建一个Native Activity应用,并经历以下开发周期,包括编辑、编译、调试Native Activity代码。当你完成Visual Studio的这个体验的后,我们欢迎您的想法及任何反馈。
入门指南
在开始创建Native Activity应用之前,请先掌握这个体验所需要的跨平台移动工具。如果你还没有掌握请参考这篇博文,它可以帮你获得经验。掌握这个工具后,让我们开始创建OOTB Native-Activity 应用,从‘Visual C++ - Cross Platform’ 节点下选择一个可用的Native Activity 应用模板。
Native-Activity 解决方案
探究创建的这个模板让我们从解决方案的结构开始。从下面的图中可以看到 ‘HelloNativeActivity’ 方案有 ‘HelloNativeActivity.NativeActivity’ 和 ‘HelloNativeActivity.Packaging’ 两个工程。NativeActivity工程用来封装这个方案中的所有具体的C/C++代码。
通过NativeActivity 工程的属性页面,用户可以设置工程的属性例如指定安卓API的级别、库的名称以及平台的工具集。请注意作为我们的跨平台移动启用的一部分,当指定安卓平台时我们已经提供了GLANG工具链(通过本机开发工具包(NDK) 使它可用)支持。这些支持包括增加了在属性页面简单提供‘代码生成’的编译器编译标志、‘优化’、以及”预编译头文件”的使用。
再看一下NativeActivity.Packaging 工程,它是HelloNativeActivity方案的第二个工程,通过调用Ant编译系统来绑定动态共享库并创建一个完整的安卓应(.apk)。因为这是一个NativeActivity方案,所以这个工程没有包含任何 Java代码但是作为Ant编译调用的一部分它可以很好的用来编译Java代码。同时请注意除此之外其它的文件的详细信息,例如安卓Manifest文件(AndroidManifest.xml),这个工程中也包含Ant 编译(build.xml)。
编辑-〉编译-〉调试周期
为了加快编辑-编译-调试周期,因此设计了跨平台移动体验。作为这个体验的一部分,针对安卓平台时,Clang工具链中增加了全面支持智能感应功能。这个是除了其它普通代码创建功能如重构,快速导航等功能外新加的功能。下图描述了在写代码时的不同功能。
接下来我们一起看一下NativeActivity应用的源文件。我们先看main.cpp源文件, ‘android_main’ 功能就是任意native-activity应用的入口函数功能,以及运行事件轮询来接收输入事件以及实现其它功能。我们来编辑这个源文件,在特定的调试目标(模拟器/设备)添加以下代码段并运行,记录传感器的数量。你可以把下面这段代码添加在‘if (state->savedState != NULL)’ 条件判断开始之前。
ASensorList sensorList;
int counter = 0;
int numSensorsDiscovered = ASensorManager_getSensorList(engine.sensorManager, &sensorList);
if ((sensorList != NULL) && (numSensorsDiscovered !=0))) {
LOGI("%d sensors were discovered on this device", numSensorsDiscovered);
}
这段代码有一个bug提示的是已经编译完的代码,这个提示是利用众所周知的Clang的修复及其它编译功能来提供诊断支持(如下图所示)。在这中特殊情况下,我们所添加的那段代码在上面强调的那一行有一个多余的括号,删掉多余的括号,程序就会编译成功。
最后,在新添加的这段代码设置一个断点,我们来试着调试一下这个程序。基于快速的Microsoft X86模拟器已经启动,而且运行调试目标已经设置成开始调试。按F5键,可以看到程序运行在调试断点停止,调试功能例如自动窗口、局部变量窗口以及其它功能如监视窗口、表达式求值、以及在调试模式下用进入、跳出所有文件来遍历源文件,以及下图所描述的其它功能。
结语
这篇博文讲了怎样使用Visual Studio来创建安卓Native-Activity应用。而且它应该可以帮助你们了解我们为精简编辑-编译-调试周期而增加的功能。我们会继续跟进这个博文,用其它的博文介绍更深入的关键功能。这是一个预览版本,对于任何预览版我们的目标是收集反馈,并向你们学习。我们正在考虑将来也支持其它平台,您的反馈是对塑造我们产品的方向是至关重要的。
分享反馈很简单!在用户之声上提出功能建议,在联系网站记录你们发现的bug,在IDE里面发给我们一个笑脸或者皱一个眉头。你们也可以在下面留下意见。除此之外,如果你正在寻找我们的产品团队直接讨论这个问题,请给我们发邮件(aasthan@microsoft.com). 我们很高兴听到你的建议并与你联系。





