J'essaie d'intégrer SignalR à mon projet Android Studio.
J'ai suivi avec succès le didacticiel sur comment démarrer avec SignalR , alors je dispose maintenant d'une variable Hub
. Le client de ce didacticiel est JavaScript, et je le fais bien dans une page Web (sous Chrome) sur PC ET sur mon téléphone Android via WiFi sur mon réseau local.
Ensuite, je suis allé faire fonctionner le client Android Java. J'avais déjà un projet d'application Android dans Android Studio, que je souhaite faire parler à cette Hub
fonctionnelle en guise de test, à l'étape suivante.
J'ai téléchargé le logiciel officiel Microsoft client Java pour Android , sous forme de fichier Zip.
Ensuite, je l'ai extrait et chargé en tant que projet dans Android Studio. Il construit sans erreurs.
Problème n ° 1: Ce projet ne me donne qu'un AAR, pas un JAR J'ai compris comment utiliser un bocal dans Android Studio. Par conséquent, s'il existe un moyen de créer un bocal à ce stade, je peux probablement y arriver.
À ce stade, j'ai inclus les dépendances dans mon projet d'application. Le readme.md dit à:
Ajoutez le gson signalr-client-sdk.jar, signalr-client-sdk-Android.jar bibliothèque en tant que dépendance du projet.
j'ai donc essayé de suivre cela aussi étroitement que possible. Voici mon build.gradle:
compile 'com.google.code.gson:gson:2.3.1'
compile files('libs/signalr-client-sdk.jar')
compile files('libs/signalr-client-sdk-Android-release.aar')
Problème n ° 2: Après avoir importé l'aar en tant que module dans mon projet d'application dans Android Studio, il ne voit toujours pas l'espace de noms nécessaire pour que l'instruction principale fonctionne. Voici la déclaration principale (le monde de salut de SignalR sous Android, en termes de compilation):
Platform.loadPlatformComponent(new AndroidPlatformComponent());
Au début, il ne récupérait rien, puis il a récupéré import Microsoft.aspnet.signalr.client.Platform;
pour Platform
. Il n'a toujours pas la moindre idée de ce que import
pour AndroidPlatformComponent
, alors je suis coincé jusqu'à ce que je puisse passer au-delà.
Comme vous le savez, Android Studio contient un grand nombre de fichiers, et je ne veux pas les diffuser tous ici avant de savoir quels fichiers vous souhaitez voir. Je les ajouterai comme édition si vous me dites quels fichiers vous voulez voir.
Eh bien, vous pouvez télécharger les fichiers jar à partir de ce link
Étape 1
Créez un dossier libs dans votre paquet et collez simplement ces fichiers jar ici.
Étape 2
Maintenant, ajoutez "compiler des fichiers" dans les dépendances de build.gradle
Maintenant, après cette presse "Synchroniser le projet avec le fichier Gradle"
Étape 3
Même après avoir synchronisé et importé jar avec succès, vous rencontrez toujours quelques erreurs d’importation, etc. ..__ Maintenant, essayez d’invalider le cache et de redémarrer.
Étape 4
Vous verrez maintenant les importations pour Platform.loadPlatformComponent (); sans aucun problème
Je travaille avec seulement Android Studio et les fichiers du projet GitHub.
Voici ce que je devais faire, pour le bien de la postérité.
signalr-client-sdk-Android-debug.aar
in Java-client\signalr-client-sdk-Android\build\outputs\aar
signalr-client-sdk.jar
in Java-client\signalr-client-sdk\build\libs
libs
de votre application.build.gradle
et ajoutez:repositories {
flatDir{
dirs 'libs'
}
}
dependencies {
compile 'com.google.code.gson:gson:2.3.1'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile(name: 'signalr-client-sdk-Android-release', ext: 'aar')
}
Outils, Android, Synchroniser le projet avec des fichiers Gradle , et lorsque cela a abouti, j’ai fait une génération .
Puis finalement, cette ligne de code m'a donné la ALT+Enter Invitez à générer le import
s pour cette ligne de code:
Platform.loadPlatformComponent(new AndroidPlatformComponent());
qui m'a donné:
import Microsoft.aspnet.signalr.client.Platform;
import Microsoft.aspnet.signalr.client.http.Android.AndroidPlatformComponent;
Ouf!
Je travaille également uniquement avec Android Studio et les fichiers du projet GitHub, mais mes dépendances de graduations sont définies comme suit:
implementation files('libs/signalr-client-sdk.jar')
implementation files('libs/signalr-client-sdk-Android.aar')