VS2015 nous promet de pouvoir créer du code pour une application iOS sur Windows. Je précise ici que je ne coderais pas une ligne, je souhaite simplement configurer mon environnement de dev pour compiler sur iOS et déployer sur mon iPad2 une app "Helloworld".
Pour cela trois moyens :
- Xamarin
- Apache Cordova
- Natif
Ce qui n'est pas crié sur les toits, c'est qu'il faut absolument une machine Apple sous MacOSx (version Yosemite recommandé) pour pouvoir compiler du code iOS. (Apple l'exige !). Du coup vous avez deux choix : soit vous avez un mac et c'est tant mieux pour vous, soit vous pouvez utiliser macinthecloud. J'ai commencé avec macinthecloud, ça coute pas cher, mais j'ai préféré aller acheter une machine Mac, même si ça coute un bras.
Avant de démarrer, il faut préparer votre Mac comme si vous allez créer une application normal avec XCode. Donc il faut
installer XCode avant. Il faut aussi un compte AppleId + un compte développeur (99$ par an). Ensuite avec XCode il faut créer un certificat développeur. Puis créer une application avec Xcode (ca permettra de générer un provisionning profile automatiquement). Pour l'iPad (ou votre iPhone), il faut aussi l'enregistrer..bref c'est trop long à détailler ici et cette page le fait très bien : http://developer.xamarin.com/guides/ios/getting_started/installation/device_provisioning/
Commençons par le moyen le plus simple Xamarin :
Xamarin :
Xamarin permet de coder sur VS2015 (ou sur l'IDE de Xamarin) une application en utilisant que du C#.
Pour cela il faut installer Xamarin sur votre Windows ET sur votre Mac. Il faut aussi un compte Xamarin et démarrer un Trial ce qui vous permet d'accéder à toutes les fonctionnalités (et d'éviter des problèmes de licences...)
L'idée ici c'est de démarrer rapidement avec un projet de base que l'on nous propose dans iOS : (blank, MasterDetails...)
Prenons Master Detail app, c'est juste histoire d'avoir un truc à montrer à l'écran. On ne touchera pas au code.
Normalement sur votre interface vous allez avoir des petits boutons comme ceci :
Ici on est pas connecté au serveur de build qui se trouve sur le mac. Il faut l'associé (pair). Ici le guide officiel.
Vous allez d'abord lancer sur votre Mac Xamarin.iOS Build Host. Il vous propose un code. Notez le.
Dans Visual Studio sur Windows ouvrez les options dans le menu 'outils', puis descendez sur Xamarin puis iOS Settings
Cliquer sur le bouton "Find Mac Build Host". Connectez vous avec l'adresse IP de votre Mac et rentrer le code de pair.
Normalement ici vous êtes connecté au serveur de build iOS. Et vous voyez la petite icône verte !
Remarquez aussi que j'ai accès à mon iPad de Yann (relié en USB sur le Mac). Pour disposer de cela il faut au préalable faire tout un tas de truc pas cool avec des certificats, des provisionning truc bidule (vive Android pour ça).
Si je lance un run sur VS2015 (Windows) ça balance mon app direct sur mon iPad (USB sur Mac). Et je suis sur Windows ! Yeahhhh ! Trop trop bon !
Apache Cordova :
Pour Apache Cordova on va devoir écrire quelques lignes de commandes dans la console.
Mais d'abord il faut installer node.js (http://nodejs.org/) sur votre Mac.
Une fois que c'est fait, il faut suivre ce doc : https://msdn.microsoft.com/library/mt147405%28v=vs.140%29.aspx#ConfigureVS
Lancer sur la console la commande :
sudo npm install -g npm@2.6.0
Cela va installer npm qui est gestionnaire de package. Celui ci va vous permettre d'installer plein de truc super qui tourne avec Node.Js. Taper ensuite la commande qui va installer vcremote :
npm install -g vcremote
Ensuite vous aller lancer un serveur qui va faire tourner vcremote. Par défaut il vous propose un échange sécurisé avec un 'pin'. (comme avec Xamarin mais en ligne de commande). Personnellement j'ai désactivé la sécurité. Pour cela taper la commande
vcremote --secure false
Voici ce que vous affiche la console :
Super, le serveur est prêt, il nous attends. Pour info, si vous voulez arrêter le serveur, taper CTRL-C.
On retourne sur Windows, Visual Studio, outils, options, Multiplateforme, C++, iOS :
Il faut paramétrer le serveur. Nous avons choisi pas de sécurité donc la case n'est pas coché. Par défaut le port est 3030. Taper l'IP de votre machine Mac. Puis le bouton Coupler. Normalement votre serveur réagit et affiche ceci :
Et votre connexions est réussi sur Visual Studio.
Seulement lorsque vous tenter de builder votre application Apache Cordova depuis VS2015, vous avez une erreur. Il vous demande de configurer qq chose. Pour cela allez (sur Windows) dans Visual Studio, outils, options, Outils pour Apache Cordova, Configuration de l'agent distant.
Si vous renseignez les même informations, le serveur vous répondra : "GET /modules/taco-remote 404"
Alors la j'ai passé un bon moment avant de comprendre qu'en fait, l'agent de build for Apache Cordova n'est pas vcremote mais remotebuild !
Il faut se rendre sur ce site https://www.npmjs.com/package/remotebuild et installer remotebuild
sudo npm install -g remotebuild
et relancer un serveur remotebuild cette fois (j'ai gardé la sécurité cette fois). Les commandes ne sont pas les mêmes mais se ressemble beaucoup.
Sur Visual Studio paramétrer maintenant votre nouveau serveur (attention le port est 3000 par défaut)
Tenter maintenant une compilation sous iOS :
Vous verrez alors votre serveur s'agiter :
C'est bon signe votre app compile ! Ça prend aussi un certain temps..
Maintenant vous pouvez lancer un run sur votre appareil local, mais attention, ce coup ci, branchez votre iphone/ipad sur le connecteur USB de votre Windows.
Il vous faudra avoir installer iTunes avant et un panneau vous avertira si vous voulez remplacer l'application existante (pas la première fois bien sûr). Remplacer la pour la mettre à jour. Sur votre iTunes vous aurez l'application qui s'affiche dans le menu Apps :
Cliquez ensuite sur le bouton Installer puis sur le bouton appliquer. L'application se transfert depuis iTunes vers l'iPad2. Vous n'avez plus qu'à l'ouvrir.
Conclusion :
La tâche n'est pas évidente. Compiler depuis Windows sur un Mac n'est pas si simple.
De plus j'ai du mal à piger à quoi sert vcremote, j'ai pas osé le désinstaller pour voir si remotebuild est autonome. Donc vous pouvez tenter de votre coté (et me dire svp) si vcremote est bien nécessaire. Je n'ai pas voulu changer mon article car vcremote possède à peu prêt les mêmes commande que remotebuild. Et puis VS2015 s'est bien connecté donc c'est qu'il doit servir à compiler un type de projet "Multiplateforme"...Mais c'est quoi un projet multiplateforme si c'est pas du Xamarin ou du Apache Cordova ?
Mais bon l'essentiel est la, on peut coder sur Windows, avec Visual Studio une application iPhone/iPad !!!
Bon code !
UPDATE : Xamarin V4.0
A priori, la connexion à distance se fait maintenant par le login en session sur mac et il gère tout seul le mac agent.