Visual Studio对安卓CMake 工程的支持

[原文发表地址] Support for Android CMake projects in Visual Studio [原文发表时间] 2015/12/16 3:16 AM CMake 是一个跨平台工程生成工具,它能让共享的C++跨平台代码在其他多种IDE环境和工程中重复利用。 在Visual Studio中,我们做了一些改变,使CMAKE能支持Android工具链。有了这一改变,你只需做最小的改动,就可以将现有的CMAKE工程变成Android目标平台的工程,你可以在Visual Studio打开你的工程,充分感受到我们丰富的Android集成开发环境的好处。 我们已经在努力做微软CMake 开源github资源库,也打算和Kitware合作将这些改变集成在公开的CMake资源库。 但是当下,下面是你们需要做的一些步骤。 前提条件,请在Visual Studio上安装Android MDD包 获取CMake 在Microsoft CMake 资源库的VCMDDSndroid下面。  请点击“Download ZIP”按钮 ,下载离线备份的VCMDDAndroid,并解压。            从https://cmake.org/download/安装CMake3.4.1,这是编译CMake做必须的,推荐Win32 安装器。  在解压缩的文件目录下,运行 cmake –G “Visual Studio 14” ,这个会从根目录下启动CMake ,大概会花15分钟左右。 这样将会使用Visual Studio 2015生成工具,和生成Visual Studio工程。目的是在Visual Studio中编译CMake。              在CMake运行后,在out文件中应该有Visual Studio 工程。 运行 msbuild cmake.sln,这将会编译CMake, 你可以在VS2015…

0

Natvis 对Android应用调试的支持

[原文发表地址]Natvis Support for Android Debugging [原文发表时间] 2015/4/29 10:00 PM 希望你已经看到我们的 Visual Studio2015中对C++代码在Android上调试的支持。现在在我们的RC版本中,我们很高兴地宣布,我们已经增加了对natvis文件的支持来帮助你可视化本地类型。 使用之前的CTP版本的客户让我们知道,在调试的时候有natvis对常用类的支持是非常有用的,如标准模板库(STL)容器类(例如向量,映射,栈,队列等)。在实际操作中来看看natvis,让我们来看一个简短的例子: 使用和不使用nativs,查看向量是怎么样的。为了这个示例,我创建了一个Android Native Activity工程,并且添加了一个用来创建一个向量并且向这个向量中添加10个值的函数。 首先让我们看一下没有natvis的用户体验。事实证明,仅仅通过在调试器中浏览对象来查出向量中值的个数和个别细项是不可能的。 现在,我会使用nativs文件来对向量做同样的操作。当我第一次展开向量,我看到两个选项,“[可视化视图]” – 这个视图是natvis展示给我的,“原始视图” – 这个是我们以前就有的非可视化视图。你可以一目了然的看到[可视化视图]中的“值”列,显示了向量中对象的数量(向量的大小)。 展开[可视化视图],它显示了向量的大小,容量,和存储在向量中的值。 如果你非常熟悉Windows natvis,你会发现,你应当明确地选择使用natvis视图,而不是使用默认配置。这是由于这样的事实,如果我们选择自动应用它时,gdb求表达式的值是非常缓慢的,这会严重地影响我们停在断点并且进行一步一步调试时的性能。 当然,你也可以为需要更好的可视化效果的类创建自己的natvis文件(我推荐你阅读这篇博客:如何编写可维护的本地可视化视图)。你可以把这些条目添加到Visual Studio安装的Microsoft.Android.natvis文件中 (如下所示)。然而,更容易和推荐的方法是创建你自己的natvis文件,并将其添加到你正在调试的项目的根目录下(你也可以把它和你的工程文件一起提交到源代码管理器中)。 在Visual Studio 2015将来发布的版本中将包含常用容器的可视化功能。为了快速上手使用RC,你可以使用这个附加的文件,这个文件中包含了下面这些容器实现的定义: std::list std::vector std::map std::set std::array std::forward_list std::queue std::priority_queue std::bitset std::valarray std::__1::vector std::__1::map 要使用它,请下载附加的Microsoft.Android.natvis文件,并替换安装在[Visual Studio 14 安装根目录] \ Common7 \ IDE \ CommonExtensions \Microsoft\ MDD…

0

VS 2015 RC 中 C++ 跨平台开发的新功能

[原文发表地址]What’s new with C++ cross-platform development with VS 2015 RC [原文发表时间]2015/4/29 10:00 PM 随着Visual C++ 跨平台手机应用功能的开发,从VS2015 RC开始(可以从这里下载),我们很高兴的宣布,Visual Studio开始支持生成iOS的应用。面向iSO开发的工作,我们已经在展开了,这个功能的启用也向大家分享了我们现在的一些想法。通过接下来的一些发布,我们将会继续专注于面向iOS开发的工作,但是现在请参照MSDN的文章来尝试我们的iOS应用开发功能。 除了最近开启的iOS平台的功能外,我们同时也为安卓和跨平台手机应用开发者增加了很多功能。针对安卓平台的开发者将会感受到如下的这些功能设置的好处: 安卓开发者现在可以使用Android API Level 21 (Android  5.0, Lollipop) 并且可以应用了更多新的NDK(NDK R10D) 安卓本地开发的GCC 工具链(GCC 4.8)也在Visual Studio中可以使用了。这是在生成安卓本地库的时候会用到的另外一个Clang工具链。开发者在属性页面的General(平台工具)属性下,可以按照下图所示的那样配置工具集来生成应用程序。 Visual C++工具链也会让开发者感受到“剥离的调试”功能,这可以开发者在部署以前从二进制文件里面剥离出调试信息, 同时他们仍然可以成功调试二进制文件。这个功能可以按照下图所示的那样,在链接器属性那里设置。 我们已经修复了VS调试一个外部生成的安卓应用,你可以在相关的博客中找到更多地信息。 调试器的可视化(NATVIS)已经加入到面向安卓平台的开发中,以此来提高调试的效率。更多的关于如何使用natvis,请参照文章Natvis对安卓应用调试的支持。 我们增加了很多新的示例关于面向安卓开发的。 这些示例大部分是安卓 NDK里已有示例代码的一部分,但是我们提供给你,让你知道如何快速的开始使用Visual Studio完成面向安卓平台应用的开发。 总之,对于C++团队来说,这是一个激动人心的时刻,我们期待你们的反馈。请通过Connect来提交Bug, 建议请通过用户反馈提交, 同时也可以在Visual Studio IDE环境中发送一个笑脸给我们。  

0

Native-Activity (安卓) 应用开发

[原文发表地址]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)’ 条件判断开始之前。  …

0

使用Visual C++ 跨平台移动技术调试JNI Android 应用程序

[原文发表地址] 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上,我们就可以模仿调试了。  …

0