Actualités

[21/06/2017] Smile dans le top 10 des entreprises où il fait bon travailler !

Smile entre dans le classement très fermé des entreprises où il fait bon débuter sa carrière. Un palmarès publié dans Les échos et réalisé par Meilleures-entreprises.com.

[20/06/2017] Smile classé 1er hébergeur en haute disponibilité depuis 3 mois

Depuis début mars, soit 3 mois consécutifs, Smile est à la tête du Classement des Hébergeurs en haute disponibilité, réalisé par ip-label et le Groupe NextRadio TV (01net, BFM, RMC).

[20/06/2017] Smile remporte l'Extending eZ Award !

Lors de l'eZ Conference 2017 qui s'est tenue du 6 au 8 juin, Smile a remporté l'Extending eZ Award.

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

Industrialisation du process de build pour applications mobile iOS et Android

Partie :1 - Développement d'une application cross-plateform via Sencha Touch

Smile s'appuie sur des frameworks multi-plateformes, dont Sencha Touch, pour réaliser des applications pour ses clients. Le développement d'applications mobiles est une tâche ardue, particulièrement au moment du build sur les différentes plateformes, qui est une activité à faible valeur ajoutée mais qui peut se révéler extrêmement chronophage.

Afin de simplifier le process de build, nous allons mettre en place une plateforme d’intégration continue pour les applications Sencha Touch. Cette plateforme va permettre d’automatiser le build pour les systèmes Android et iOS.

Pré-requis

Xcode, l’outil Command Line Tools (DansXcode, Xcode->Préférences->Downloads->Install Command Line Tools), un compte apple, un certificat de développeur, un app id et un  provisionning profile sont requis.

Pour android, il faut installer le SDK android (http://developer.android.com/sdk/index.html).

Installation des outils Sencha

On commence par Sencha Touch, qui  estun framework de développement JavaScript pour réaliser des applications webs pour mobile.
On le télécharge ici:
http://www.sencha.com/products/touch/
Et on décompresse l’archive.
(Documentation de l’API Sencha : http://docs.sencha.com/touch/2-0/#!/api)
Ensuite on installe Sencha Command (ou autrement appelé Sencha SDK Tools):
http://www.sencha.com/products/sdk-tools/download
On lance SenchaSDKTools-xxxxx.app et on ajoute Sencha Command au Path (en remplacant le numéro de version):
export SENCHA_SDK=/Applications/SenchaSDKTools-xxxx/
export PATH=$PATH:$SENCHA_SDK

Création d’une application

On se place dans le répertoire où le framework Sencha a été décompressé. On génère une application par la commande:
sencha app create --name=MyApp --path=/path/to/MyApp --library=all  
Ou plus simplement:
sencha app create MyApp /path/to/myapp all
L’application web générée est prête à l’emploi, on peut y accéder dans son navigateur si on a créé l’application dans un répertoire servi par apache (/Users/myuser/Sites par exemple).

Le premier build

Sencha Command propose un outil de build des applications, qu’on va lancer tout de suite:
sencha app build native
Sencha Command package l’application dans build/native, on trouve dans ce dossier:
●    My Application.app
●    Entitlements.entitlements
Le premier fichier est l’application packagée, le second est un fichier de configuration pour la signature de l’application.
Sencha s’occupe de démarrer le simulateur iOS et de lancer l’application.
Sencha se base sur le fichier packager.json pour générer le build. Pour avoir un packager.json débuggé, documenté et plus complet, on exécute:
sencha package generate

Complément sur Sencha Command

Sencha Command peut génèrer une partie du code pour nous, pour créer un modèle Product avec des champs id et name, on peut exécuter :

sencha generate model Product id:int,name:string
Pour plus d’informations :
sencha generate
Sencha Command propose de plus des outils de minification, concaténation et de delta, voir:
sencha fs

Build et tests sur machine

Build ios

On a crée une application et on l’a lancé sur le simulateur, prochaine étape: le test sur machine iOS.
Pour ça, on modifie le packager.json:
{
    "applicationName":"MyApp",
    "applicationId":"xx.yyy.myapp",
    "bundleSeedId":"XXXXXXXXXX",
    "versionString":"1.0",
    "iconName":"resources/icons/Icon~ipad.png",
    "inputPath":"build/native",
"outputPath":"build/",
"configuration":"Debug",
"platform":"iOS",
"deviceType":"Universal",
"certificateAlias":"iPhone Developer: XXX YYY",
"orientations": [
    "portrait",
    "landscapeLeft",
    "landscapeRight",
    "portraitUpsideDown"
]
}
Et on build avec la commande:
sencha app build native
On fait glisser l’application créée dans la fenêtre Organizer de Xcode pour la déposer sur le device cible.
Xcode nous signale que l’application n’est pas signé correctement :
The executable was signed with invalid entitlements.
On va donc re-signé l’application.
On crée un fichier de configuration de signature d’application Entitlements.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>XXXXXXXXXX.xx.yyy.myapp</string>
    <key>get-task-allow</key>
    <true/>
</dict>
</plist>
La valeur get-task-allow correspond à la valeur “Can be debugged” dans Xcode.
On signe l’application avec la commande suivante:
codesign -f -dvvv -s 'iPhone Developer: XXX YYY' --entitlements 'Entitlements.plist' 'build/native/MyApp.app'
Et on redépose l’application.

Build android

Pour android, on commence par générer une clef avec la commande suivante (dans path/to/android-sdk/plateform-tools):
keytool -genkey -v -keystore key.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 10000
On modifie le packager.json:
{
    "applicationName":"MyApp",
"applicationId":"xx.yyy.myapp",
    "versionString":"1.0",
    "iconName":"resources/icons/Icon~ipad.png",
    "inputPath":"build/native",
    "outputPath":"build/",
    "configuration":"Debug",
    "platform":"Android",
    "certificatePath":"/path/to/your/key.keystroke",
    "sdkPath":"/path/to/android-sdk/",
    "androidAPILevel":"15",
    "orientations": [
        "portrait",
        "landscapeLeft",
        "landscapeRight",
        "portraitUpsideDown"
    ]
}
On build avec:
sencha app build native
Il est possible que l’on tombe sur l’erreur suivante:
Target id is not valid. Use 'android list targets' to get the target ids.
L’erreur provient d’un problème de Sencha Command qui ne prend pas en compte l’android cible correctement, La solution est d’installer l’API level 7 d’android puis on re-build.
Si l’application n’est pas transférée sur le device, on peut exécuter :
adb install build/native/MyApp.apk

Installation de Gradle

Gradle est un outil de build, il est disponible ici:

http://www.gradle.org/downloads

 On unzip l’archive, puis on ajoute Gradle auPath:

export PATH=$PATH:/path/to/gradlehome/bin/

Les instructions complètes d’installation sont disponibles ici:

http://gradle.org/docs/current/userguide/installation.html

Conclusion

A la fin de cette première partie, nous avons vu comment installer et utiliser Sencha Touch et ses outils pour créer une application et la lancer dans le simulateur iOS. Dans la deuxième partie nous verrons comment automatiser le build.

sencha generate model Product id:int,name:string

Pour plus d’informations :

sencha generate

Sencha Command propose de plus des outils de minification, concaténation et de delta, voir:

sencha fs

Simon BASSET
picto

Commentaires

Soyez la premiere personne à ajouter un commentaire sur cet article.
Ecrire un nouveau commentaire