= Getting Started: Building for UWP and Windows Phone 8.x = [[TracNav(Getting-Started/TOC)]] [[PageOutline(2-3,,inline)]] == Build Preparation == 1. [wiki:Getting-Started/Download-Source Get the source code], if you haven't already. UWP and WP8 support is available since PJSIP 2.6. 1. '''It is important that you create a config_site.h as described in [wiki:Getting-Started/Build-Preparation Build Preparation]''' {{{ #!comment * Set your [wiki:Getting-Started/Build-Preparation config_site.h] to the following: {{{ #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 #define PJMEDIA_AUDIO_DEV_HAS_WMME 0 #define PJMEDIA_AUDIO_DEV_HAS_WASAPI 1 }}} }}} == Requirements == === Tools and SDKs === * Microsoft Visual Studio 2015 Update 3 * [https://dev.windows.com/en-us/downloads/windows-10-sdk UWP SDK] for UWP/Windows 10 target. * [http://dev.windowsphone.com/en-us/downloadsdk Windows Phone 8 SDK] for Windows Phone 8 target. * Configuring device for development: - for Windows 10, follow the instructions [https://msdn.microsoft.com/en-us/windows/uwp/get-started/enable-your-device-for-development here] - for Windows Phone 8.x, follow the instructions [http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769508(v=vs.105).aspx here] === Host requirements === For the host, the following are required: * Operating System type : 64-bit Windows 8 Professional or higher. == Building and running the Projects == === UWP === Follow the steps below to build the libraries and sample application using Visual Studio 2015: 1. Using any text editor, open {{{build\vs\pjproject-vs14-api-def.props}}} and set {{{API_Family}}} to '''UWP''', i.e: {{{ ... UWP ... }}} 1. Open {{{pjproject-vs14.sln}}} solution file. 1. Set solution platform to: - '''ARM''' to build for UWP/Windows 10 device - '''Win32''' to build for emulator 1. Set '''Voip''' as Startup Project. 1. Build the project. This will build '''Voip''' application and all libraries needed by '''Voip'''. 1. Run === Windows Phone 8.x === Follow the steps below to build the libraries and sample application using Visual Studio 2015: 1. Using any text editor, open {{{build\vs\pjproject-vs14-api-def.props}}} and set {{{API_Family}}} to '''Winphone8''', i.e: {{{ ... Winphone8 ... }}} 1. Open {{{pjproject-vs14.sln}}} solution file. 1. Set '''ARM''' as the solution platform. 1. Set '''pjsua_cli_wp''' as Startup Project. 1. Build the project. This will build '''pjsua_cli_wp''' application and all libraries needed by '''pjsua_cli_wp'''. 1. Run/deploy the '''pjsua_cli_wp''' application on a registered Windows phone device. 1. You will see telnet instructions on the device's screen. Telnet to this address to operate the application. See [wiki:PJSUA-CLI PJSUA CLI Manual] for command reference. == Debugging Application == To Debug native(C/C++) part of the application: * Set the '''Debugger type''' of project properties [Debug menu] to '''Native Only'''. To Debug managed(C#) part of the application: * Set the '''Debugger type''' of project properties [Debug menu] to '''Managed Only'''. === Assert Problem on Debugging Native Code === As described [http://blogs.msdn.com/b/andypennell/archive/2013/06/17/native-code-on-windows-phone-8-the-assert-problem.aspx here], assertion will cause process exiting (instead of just stopping). Adding the following code in the application would make process stopping on assertion: {{{ #ifndef NDEBUG signal(SIGABRT, [](int) { __debugbreak(); }); #endif }}} == Other References == * [http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206983%28v=vs.105%29.aspx VoIP apps for Windows Phone 8] * Ticket #1900 about porting to Windows 10/UWP