Realm ist eine mobile Datenbank, die direkt in Telefonen, Tablets oder Wearables ausgeführt wird. Dieses Repository enthält den Quellcode für die Java-Version von Realm, die derzeit nur auf Android läuft.
Das Realm Kotlin SDK ist jetzt GA und kann sowohl für Android als auch für Kotlin Multiplatform verwendet werden. Während wir noch Funktionen hinzufügen, erwägen Sie bitte die Verwendung von Realm Kotlin für jedes neue Projekt und lassen Sie uns wissen, wenn Sie dort etwas vermissen!
Bitte lesen Sie die detaillierten Anweisungen in unseren Dokumenten, um Realm zu Ihrem Projekt hinzuzufügen.
Die Dokumentation für Realm finden Sie unter mongodb.com/docs/atlas/device-sdks/sdk/java/. Die API-Referenz befindet sich unter mongodb.com/docs/atlas/device-sdks/sdk/java/api/.
Wenn Sie aktuelle Bugfixes oder Funktionen testen möchten, die noch nicht in einer offiziellen Version enthalten sind, können Sie eine -SNAPSHOT- Version der aktuellen Entwicklungsversion von Realm über Gradle verwenden, verfügbar auf 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()
}
}
Die neueste Versionsnummer finden Sie in version.txt.
Falls Sie die vorkompilierte Version nicht verwenden möchten, können Sie Realm selbst aus dem Quellcode erstellen.
Laden Sie das JDK 8 von Oracle herunter und installieren Sie es.
Die neueste stabile Version von Android Studio. Derzeit 4.1.1.
Laden Sie die Android SDK Build-Tools 29.0.3 , Android Pie (API 29) herunter und installieren Sie sie (zum Beispiel über den Android SDK Manager von Android Studio).
Installieren Sie CMake Version 3.18.4 und erstellen Sie Ninja.
Installieren Sie das NDK (Side-by-Side) 21.0.6113669 über den SDK-Manager in Android Studio. Denken Sie daran, ☑ Show package details
im Manager zu aktivieren, um alle verfügbaren Versionen anzuzeigen.
Fügen Sie Ihrem Profil die Android-Home-Umgebungsvariable hinzu:
export ANDROID_HOME=~/Library/Android/sdk
Wenn Sie Android Studio über den macOS Finder starten, sollten Sie auch den folgenden Befehl ausführen:
launchctl setenv ANDROID_HOME "$ANDROID_HOME"
Wenn Sie den Speicherort angeben möchten, an dem die Archive von Realm Core gespeichert werden sollen, definieren Sie die Umgebungsvariable REALM_CORE_DOWNLOAD_DIR
. Es ermöglicht das Zwischenspeichern von Kern-Release-Artefakten.
export REALM_CORE_DOWNLOAD_DIR=~/.realmCore
macOS-Benutzer müssen außerdem den folgenden Befehl für Android Studio ausführen, um diese Umgebungsvariable anzuzeigen.
launchctl setenv REALM_CORE_DOWNLOAD_DIR "$REALM_CORE_DOWNLOAD_DIR"
Es wäre eine gute Idee, alle Symboldefinitionen (und die dazugehörigen launchctl
-Befehle, wenn Sie macOS verwenden) zu Ihrem ~/.profile
(oder ~/.zprofile
wenn die Login-Shell zsh
ist) hinzuzufügen.
Wenn Sie Realm Java mit Android Studio entwickeln, empfehlen wir Ihnen, einige Verzeichnisse vom Indexierungsziel auszuschließen, indem Sie die folgenden Schritte in Android Studio ausführen. Es beschleunigt die Indizierungsphase nach dem Build erheblich.
/realm/realm-library/
in Project
die Ordner build
, .cxx
und distribution
aus.Command + Shift + A
um das Dialogfeld Find action
zu öffnen. Wenn Sie weder die Standard-Tastaturbelegung noch macOS verwenden, können Sie Ihre Tastenkombination in Keymap
Einstellungen finden, indem Sie Find action
suchen suchen.Excluded
(nicht Exclude
) und wählen Sie sie aus. Ausgewählte Ordnersymbole sollten orange werden (im Standarddesign). Sie können den Quellcode von Realm Java mit git herunterladen. Da realm-java über Git-Submodule verfügt, verwenden Sie beim Klonen des Repositorys --recursive
.
git clone [email protected]:realm/realm-java.git --recursive
oder
git clone https://github.com/realm/realm-java.git --recursive
Sobald Sie alle Voraussetzungen erfüllt haben, ist der Aufbau von Realm mit einem einfachen Befehl erledigt.
./gradlew assemble
Dieser Befehl generiert Folgendes:
Der vollständige Aufbau kann eine Stunde oder länger dauern.
Es ist möglich, Realm Java mit der Submodulversion von Realm Core zu erstellen. Dies geschieht durch die Bereitstellung des folgenden Parameters beim Erstellen: -PbuildCore=true
.
./gradlew assembleBase -PbuildCore=true
Sie können interprozedurale Optimierungen mit dem folgenden Parameter deaktivieren: -PenableLTO=false
.
./gradlew assembleBase -PenableLTO=false`
Hinweis: Beim Erstellen der Base
würde immer der Realm-Core erstellt.
Hinweis: Interprozedurale Optimierungen sind standardmäßig aktiviert.
Hinweis: Wenn Sie in Android Studio aus dem Quellcode erstellen möchten, müssen Sie die Gradle-Parameter aktualisieren, indem Sie in den Realm-Projekteinstellungen Settings > Build, Execution, Deployment > Compiler > Command-line options
aufrufen und -PbuildCore=true
oder -PenableLTO=false
hinzufügen -PenableLTO=false
dazu. Alternativ können Sie es in Ihre gradle.properties
einfügen:
buildCore=true
enableLTO=false
Hinweis: Wenn Sie auf OSX bauen, möchten Sie möglicherweise verhindern, dass Gatekeeper alle ausführbaren NDK-Dateien blockiert, indem Sie es deaktivieren: sudo spctl --master-disable
. Denken Sie daran, es anschließend zu aktivieren: sudo spctl --master-enable
./gradlew tasks
zeigt alle verfügbaren Aufgaben an./gradlew javadoc
generiert die Javadocs./gradlew monkeyExamples
führt die Affentests für alle Beispiele durch./gradlew installRealmJava
installiert die Realm-Bibliothek und das Plugin für mavenLocal()./gradlew clean -PdontCleanJniFiles
entfernt alle generierten Dateien mit Ausnahme der JNI-bezogenen Dateien. Dies verkürzt die Zeit für die Neukompilierung erheblich../gradlew connectedUnitTests -PbuildTargetABIs=$(adb shell getprop ro.product.cpu.abi)
erstellt JNI-Dateien nur für den ABI, der dem angeschlossenen Gerät entspricht. Für diese Tests ist ein laufender Objektserver erforderlich (siehe unten).Das Generieren des Javadoc mit dem obigen Befehl kann zu Warnungen führen. Das Javadoc wird trotz der Warnungen generiert.
Alle Gradle-Projekte in diesem Repository verfügen über wrapper
Aufgabe zum Generieren von Gradle-Wrappern. Diese Aufgaben beziehen sich auf die in /dependencies.list
definierte gradle
-Eigenschaft, um die Gradle-Version der generierten Wrapper zu bestimmen. Wir haben ein Skript ./tools/update_gradle_wrapper.sh
um diese Schritte zu automatisieren. Wenn Sie Gradle Wrappers aktualisieren, befolgen Sie bitte die folgenden Schritte.
/dependencies.list
definierte gradle
Eigenschaft in die neue Gradle Wrapper-Version./tools/update_gradle_wrapper.sh
aus.Das Repository ist in sechs Gradle-Projekte unterteilt:
realm
: Es enthält die eigentliche Bibliothek (einschließlich der JNI-Schicht) und den Anmerkungsprozessor.realm-annotations
: Es enthält die von Realm definierten Anmerkungen.realm-transformer
: Es enthält den Bytecode-Transformer.gradle-plugin
: Es enthält das Gradle-Plugin.examples
: Es enthält die Beispielprojekte. Dieses Projekt hängt direkt vom gradle-plugin
ab, das eine Abhängigkeit zu den von realm
erzeugten Artefakten hinzufügt. Das bedeutet, dass ./gradlew clean
und ./gradlew cleanExamples
fehlschlagen, wenn assembleExamples
nicht zuerst ausgeführt wurde. Beachten Sie, dass IntelliJ nicht mehrere Projekte im selben Fenster unterstützt, sodass jedes der sechs Gradle-Projekte als separates IntelliJ-Projekt importiert werden muss.
Da das Repository mehrere völlig unabhängige Gradle-Projekte enthält, werden mehrere unabhängige Builds ausgeführt, um es zusammenzustellen. Das Sehen einer Zeile wie: :realm:realm-library:compileBaseDebugAndroidTestSources UP-TO-DATE
im Build-Protokoll bedeutet nicht , dass Sie ./gradlew :realm:realm-library:compileBaseDebugAndroidTestSources
ausführen können.
Der Ordner ./examples
enthält viele Beispielprojekte, die zeigen, wie Realm verwendet werden kann. Wenn Sie zum ersten Mal eine neue Version dieses Repositorys auschecken oder abrufen, um die Beispiele auszuprobieren, müssen Sie zunächst ./gradlew installRealmJava
aus dem Verzeichnis der obersten Ebene aufrufen. Andernfalls werden die Beispiele nicht kompiliert, da sie davon abhängen, dass alle Realm-Artefakte in mavenLocal()
installiert werden.
Eigenständige Beispiele können von der Website heruntergeladen werden.
Um diese Tests auszuführen, muss ein Gerät mit dem Build-Computer verbunden sein und der Befehl adb
muss sich in Ihrem PATH
befinden
Schließen Sie ein Android-Gerät an und überprüfen Sie, ob der Befehl adb devices
ein verbundenes Gerät anzeigt:
adb devices
List of devices attached
004c03eb5615429f device
Führen Sie Instrumentierungstests durch:
cd realm
./gradlew connectedBaseDebugAndroidTest
Die Durchführung dieser Tests kann bis zu einer halben Stunde dauern.
Für Tests in realm/realm-library/src/syncIntegrationTest
ist ein laufender Testserver erforderlich. Ein Docker-Image kann aus tools/sync_test_server/Dockerfile
erstellt werden, um den Testserver auszuführen. tools/sync_test_server/start_server.sh
erstellt das Docker-Image automatisch.
So führen Sie einen Testserver lokal aus:
Installieren Sie Docker und führen Sie es aus.
Führen Sie tools/sync_test_server/start_server.sh
aus:
cd tools/sync_test_server
./start_server.sh
Dieser Befehl wird erst ausgeführt, wenn der Server gestoppt wurde.
Führen Sie Instrumentierungstests durch
Führen Sie in einem neuen Terminalfenster Folgendes aus:
cd realm
./gradlew connectedObjectServerDebugAndroidTest
Beachten Sie, dass bei Verwendung von VirtualBox (Genymotion) das Netzwerk überbrückt werden muss, damit die Tests funktionieren. Dies erfolgt unter VirtualBox > Network
. Stellen Sie „Adapter 2“ auf „Bridged Adapter“ ein.
Die Durchführung dieser Tests kann bis zu einer halben Stunde dauern.
Weitere Informationen finden Sie unter CONTRIBUTING.md!
Dieses Projekt hält sich an den MongoDB-Verhaltenskodex. Durch Ihre Teilnahme wird von Ihnen erwartet, dass Sie diesen Kodex einhalten. Bitte melden Sie inakzeptables Verhalten an [email protected].
Das Verzeichnis realm/config/studio
enthält Lint- und Style-Dateien, die für Projektcode empfohlen werden. Importieren Sie sie aus Android Studio mit Android Studio > Voreinstellungen... > Codestil > Verwalten... > Importieren oder Android Studio > Voreinstellungen... > Inspektionen > Verwalten... > Importieren. Wählen Sie nach dem Import den Stil/Lint im Dropdown-Menü links neben der Schaltfläche „Verwalten...“ aus.
Realm Java wird unter der Apache 2.0-Lizenz veröffentlicht.
Realm Core wird ebenfalls unter der Apache 2.0-Lizenz veröffentlicht und ist hier verfügbar.
Wenn Sie Realm verwenden und damit zufrieden sind, bitten wir Sie lediglich, einen Tweet mit der Erwähnung von @realm zu versenden, um Ihre Gedanken mitzuteilen!
Und wenn es Ihnen nicht gefällt, teilen Sie uns bitte mit, was Sie verbessern möchten, damit wir es beheben können!