Realm est une base de données mobile qui s'exécute directement dans les téléphones, les tablettes ou les appareils portables. Ce référentiel contient le code source de la version Java de Realm, qui fonctionne actuellement uniquement sur Android.
Le SDK Realm Kotlin est désormais GA et peut être utilisé à la fois pour Android et Kotlin Multiplatform. Pendant que nous ajoutons encore des fonctionnalités, pensez à utiliser Realm Kotlin pour tout nouveau projet et faites-nous savoir si vous manquez quelque chose !
Veuillez consulter les instructions détaillées dans nos documents pour ajouter Realm à votre projet.
La documentation pour Realm est disponible sur mongodb.com/docs/atlas/device-sdks/sdk/java/. La référence de l'API se trouve sur mongodb.com/docs/atlas/device-sdks/sdk/java/api/.
Si vous souhaitez tester des corrections de bugs récentes ou des fonctionnalités qui n'ont pas encore été intégrées dans une version officielle, vous pouvez utiliser une version -SNAPSHOT de la version de développement actuelle de Realm via Gradle, disponible sur Sonatype OSS.
buildscript {
repositories {
mavenCentral()
google()
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:<version>-SNAPSHOT"
}
}
allprojects {
repositories {
mavenCentral()
google()
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
jcenter()
}
}
Voir version.txt pour le dernier numéro de version.
Si vous ne souhaitez pas utiliser la version précompilée, vous pouvez créer Realm vous-même à partir des sources.
Téléchargez le JDK 8 depuis Oracle et installez-le.
La dernière version stable d'Android Studio. Actuellement 4.1.1.
Téléchargez et installez Android SDK Build-Tools 29.0.3 , Android Pie (API 29) (par exemple via Android SDK Manager d'Android Studio).
Installez CMake version 3.18.4 et construisez Ninja.
Installez le NDK (Side-by-side) 21.0.6113669 à partir du SDK Manager dans Android Studio. N'oubliez pas de cocher ☑ Show package details
dans le gestionnaire pour afficher toutes les versions disponibles.
Ajoutez la variable d'environnement domestique Android à votre profil :
export ANDROID_HOME=~/Library/Android/sdk
Si vous lancez Android Studio à partir du Finder macOS, vous devez également exécuter la commande suivante :
launchctl setenv ANDROID_HOME "$ANDROID_HOME"
Si vous souhaitez spécifier l'emplacement dans lequel stocker les archives de Realm Core, définissez la variable d'environnement REALM_CORE_DOWNLOAD_DIR
. Il permet de mettre en cache les artefacts de la version principale.
export REALM_CORE_DOWNLOAD_DIR=~/.realmCore
Les utilisateurs de macOS doivent également exécuter la commande suivante pour Android Studio afin de voir cette variable d'environnement.
launchctl setenv REALM_CORE_DOWNLOAD_DIR "$REALM_CORE_DOWNLOAD_DIR"
Ce serait une bonne idée d'ajouter toutes les définitions de symboles (et les commandes launchctl
qui les accompagnent, si vous utilisez macOS) à votre ~/.profile
(ou ~/.zprofile
si le shell de connexion est zsh
)
Si vous développez Realm Java avec Android Studio, nous vous recommandons d'exclure certains répertoires de la cible d'indexation en exécutant les étapes suivantes sur Android Studio. Cela accélère vraiment la phase d'indexation après la construction.
/realm/realm-library/
, sélectionnez les dossiers build
, .cxx
et distribution
dans la vue Project
.Command + Shift + A
pour ouvrir la boîte de dialogue Find action
. Si vous n'utilisez pas le clavier par défaut ni macOS, vous pouvez trouver votre touche de raccourci dans les préférences Keymap
en recherchant Find action
.Excluded
(et non Exclude
) et sélectionnez-la. Les icônes des dossiers sélectionnés doivent devenir orange (dans le thème par défaut). Vous pouvez télécharger le code source de Realm Java en utilisant git. Puisque realm-java a des sous-modules git, utilisez --recursive
lors du clonage du référentiel.
git clone [email protected]:realm/realm-java.git --recursive
ou
git clone https://github.com/realm/realm-java.git --recursive
Une fois que vous avez rempli tous les prérequis, la construction de Realm se fait avec une simple commande.
./gradlew assemble
Cette commande générera :
La construction complète peut prendre une heure ou plus.
Il est possible de construire Realm Java avec la version sous-module de Realm Core. Cela se fait en fournissant le paramètre suivant lors de la construction : -PbuildCore=true
.
./gradlew assembleBase -PbuildCore=true
Vous pouvez désactiver les optimisations interprocédurales avec le paramètre suivant : -PenableLTO=false
.
./gradlew assembleBase -PenableLTO=false`
Remarque : Construire la variante Base
créerait toujours un noyau de domaine.
Remarque : Les optimisations interprocédurales sont activées par défaut.
Remarque : Si vous souhaitez créer à partir des sources dans Android Studio, vous devez mettre à jour les paramètres Gradle en accédant aux paramètres des projets Realm Settings > Build, Execution, Deployment > Compiler > Command-line options
et ajouter -PbuildCore=true
ou -PenableLTO=false
. Alternativement, vous pouvez l'ajouter dans votre gradle.properties
:
buildCore=true
enableLTO=false
Remarque : si vous construisez sur OSX, vous souhaiterez peut-être empêcher Gatekeeper de bloquer tous les exécutables NDK en le désactivant : sudo spctl --master-disable
. Pensez à l'activer ensuite : sudo spctl --master-enable
./gradlew tasks
affichera toutes les tâches disponibles./gradlew javadoc
générera les Javadocs./gradlew monkeyExamples
exécutera les tests de singe sur tous les exemples./gradlew installRealmJava
installera la bibliothèque et le plugin Realm sur mavenLocal()./gradlew clean -PdontCleanJniFiles
supprimera tous les fichiers générés à l'exception des fichiers liés à JNI. Cela réduit considérablement le temps de recompilation../gradlew connectedUnitTests -PbuildTargetABIs=$(adb shell getprop ro.product.cpu.abi)
construira des fichiers JNI uniquement pour l'ABI qui correspond au périphérique connecté. Ces tests nécessitent un serveur Object en cours d'exécution (voir ci-dessous)La génération du Javadoc à l'aide de la commande ci-dessus peut générer des avertissements. Le Javadoc est généré malgré les avertissements.
Tous les projets Gradle de ce référentiel ont une tâche wrapper
pour générer des Gradle Wrappers. Ces tâches font référence à la propriété gradle
définie dans /dependencies.list
pour déterminer la version Gradle de la génération des wrappers. Nous avons un script ./tools/update_gradle_wrapper.sh
pour automatiser ces étapes. Lorsque vous mettez à jour Gradle Wrappers, veuillez suivre les étapes suivantes.
gradle
définie dans /dependencies.list
vers la nouvelle version de Gradle Wrapper./tools/update_gradle_wrapper.sh
.Le référentiel est organisé en six projets Gradle :
realm
: il contient la bibliothèque proprement dite (y compris la couche JNI) et le processeur d'annotations.realm-annotations
: il contient les annotations définies par Realm.realm-transformer
: il contient le transformateur de bytecode.gradle-plugin
: il contient le plugin Gradle.examples
: il contient les exemples de projets. Ce projet dépend directement de gradle-plugin
qui ajoute une dépendance aux artefacts produits par realm
. Cela signifie que ./gradlew clean
et ./gradlew cleanExamples
échoueront si assembleExamples
n'a pas été exécuté en premier. Notez qu'IntelliJ ne prend pas en charge plusieurs projets dans la même fenêtre, chacun des six projets Gradle doit donc être importé en tant que projet IntelliJ distinct.
Étant donné que le référentiel contient plusieurs projets Gradle complètement indépendants, plusieurs builds indépendants sont exécutés pour l'assembler. Voir une ligne comme : :realm:realm-library:compileBaseDebugAndroidTestSources UP-TO-DATE
dans le journal de build n'implique pas que vous pouvez exécuter ./gradlew :realm:realm-library:compileBaseDebugAndroidTestSources
.
Le dossier ./examples
contient de nombreux exemples de projets montrant comment Realm peut être utilisé. Si c'est la première fois que vous extrayez ou extrayez une nouvelle version de ce référentiel pour essayer les exemples, vous devez d'abord appeler ./gradlew installRealmJava
à partir du répertoire de niveau supérieur. Sinon, les exemples ne seront pas compilés car ils dépendent de tous les artefacts Realm installés dans mavenLocal()
.
Des exemples autonomes peuvent être téléchargés à partir du site Web.
Pour exécuter ces tests, vous devez avoir un périphérique connecté à l'ordinateur de build et la commande adb
doit être dans votre PATH
Connectez un appareil Android et vérifiez que la commande adb devices
affiche un appareil connecté :
adb devices
List of devices attached
004c03eb5615429f device
Exécutez des tests d’instrumentation :
cd realm
./gradlew connectedBaseDebugAndroidTest
Ces tests peuvent prendre jusqu’à une demi-heure.
Les tests dans realm/realm-library/src/syncIntegrationTest
nécessitent un serveur de test en cours d'exécution pour fonctionner. Une image Docker peut être créée à partir de tools/sync_test_server/Dockerfile
pour exécuter le serveur de test. tools/sync_test_server/start_server.sh
construira automatiquement l'image Docker.
Pour exécuter un serveur de test localement :
Installez Docker et exécutez-le.
Exécutez tools/sync_test_server/start_server.sh
:
cd tools/sync_test_server
./start_server.sh
Cette commande ne se terminera pas tant que le serveur ne sera pas arrêté.
Exécuter des tests d'instrumentation
Dans une nouvelle fenêtre de terminal, exécutez :
cd realm
./gradlew connectedObjectServerDebugAndroidTest
Notez que si vous utilisez VirtualBox (Genymotion), le réseau doit être ponté pour que les tests fonctionnent. Cela se fait dans VirtualBox > Network
. Réglez « Adaptateur 2 » sur « Adaptateur ponté ».
Ces tests peuvent prendre jusqu’à une demi-heure.
Voir CONTRIBUTING.md pour plus de détails !
Ce projet adhère au code de conduite de MongoDB. En participant, vous êtes censé respecter ce code. Veuillez signaler tout comportement inacceptable à [email protected].
Le répertoire realm/config/studio
contient les fichiers lint et de style recommandés pour le code du projet. Importez-les depuis Android Studio avec Android Studio > Préférences... > Style de code > Gérer... > Importer, ou Android Studio > Préférences... > Inspections > Gérer... > Importer. Une fois importé, sélectionnez le style/peluche dans la liste déroulante à gauche du bouton Gérer....
Realm Java est publié sous la licence Apache 2.0.
Realm Core est également publié sous licence Apache 2.0 et est disponible ici.
Si vous utilisez Realm et en êtes satisfait, tout ce que nous vous demandons, c'est d'envisager d'envoyer un tweet mentionnant @realm pour partager vos réflexions !
Et si vous ne l'aimez pas, faites-nous savoir ce que vous souhaiteriez améliorer, afin que nous puissions y remédier !