Realm es una base de datos móvil que se ejecuta directamente en teléfonos, tabletas o dispositivos portátiles. Este repositorio contiene el código fuente de la versión Java de Realm, que actualmente solo se ejecuta en Android.
El SDK de Realm Kotlin ahora es GA y se puede utilizar tanto para Android como para Kotlin multiplataforma. Mientras todavía estamos agregando funciones, considere usar Realm Kotlin para cualquier proyecto nuevo y avísenos si se pierde algo allí.
Consulte las instrucciones detalladas en nuestros documentos para agregar Realm a su proyecto.
La documentación de Realm se puede encontrar en mongodb.com/docs/atlas/device-sdks/sdk/java/. La referencia de API se encuentra en mongodb.com/docs/atlas/device-sdks/sdk/java/api/.
Si desea probar correcciones de errores recientes o funciones que aún no se han incluido en una versión oficial, puede usar una versión -SNAPSHOT de la versión de desarrollo actual de Realm a través de Gradle, disponible en 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()
}
}
Consulte version.txt para obtener el número de versión más reciente.
En caso de que no desee utilizar la versión precompilada, puede crear Realm usted mismo desde el código fuente.
Descargue el JDK 8 de Oracle e instálelo.
La última versión estable de Android Studio. Actualmente 4.1.1.
Descargue e instale Android SDK Build-Tools 29.0.3 , Android Pie (API 29) (por ejemplo, a través del Android SDK Manager de Android Studio).
Instale CMake versión 3.18.4 y cree Ninja.
Instale el NDK (en paralelo) 21.0.6113669 desde SDK Manager en Android Studio. Recuerde marcar ☑ Show package details
en el administrador para mostrar todas las versiones disponibles.
Agregue la variable de entorno de inicio de Android a su perfil:
export ANDROID_HOME=~/Library/Android/sdk
Si está iniciando Android Studio desde macOS Finder, también debe ejecutar el siguiente comando:
launchctl setenv ANDROID_HOME "$ANDROID_HOME"
Si desea especificar la ubicación en la que almacenar los archivos de Realm Core, defina la variable de entorno REALM_CORE_DOWNLOAD_DIR
. Permite almacenar en caché los artefactos de lanzamiento principales.
export REALM_CORE_DOWNLOAD_DIR=~/.realmCore
Los usuarios de macOS también deben ejecutar el siguiente comando para que Android Studio vea esta variable de entorno.
launchctl setenv REALM_CORE_DOWNLOAD_DIR "$REALM_CORE_DOWNLOAD_DIR"
Sería una buena idea agregar todas las definiciones de símbolos (y los comandos launchctl
que las acompañan, si está usando macOS) a su ~/.profile
(o ~/.zprofile
si el shell de inicio de sesión es zsh
)
Si desarrolla Realm Java con Android Studio, le recomendamos excluir algunos directorios del objetivo de indexación ejecutando los siguientes pasos en Android Studio. Realmente acelera la fase de indexación después de la compilación.
/realm/realm-library/
, seleccione las carpetas build
, .cxx
y distribution
en la vista Project
.Command + Shift + A
para abrir el cuadro de diálogo Find action
. Si no está utilizando el mapa de teclas predeterminado ni macOS, puede encontrar su tecla de método abreviado en la preferencia Keymap
buscando Find action
.Excluded
(no Exclude
) y selecciónela. Los iconos de las carpetas seleccionadas deben volverse naranjas (en el tema predeterminado). Puede descargar el código fuente de Realm Java usando git. Dado que kingdom-java tiene submódulos git, use --recursive
al clonar el repositorio.
git clone [email protected]:realm/realm-java.git --recursive
o
git clone https://github.com/realm/realm-java.git --recursive
Una vez que haya completado todos los requisitos previos, la construcción de Realm se realiza con un simple comando.
./gradlew assemble
Ese comando generará:
La construcción completa puede tardar una hora o más en completarse.
Es posible construir Realm Java con la versión de submódulo de Realm Core. Esto se hace proporcionando el siguiente parámetro al compilar: -PbuildCore=true
.
./gradlew assembleBase -PbuildCore=true
Puede desactivar las optimizaciones entre procedimientos con el siguiente parámetro: -PenableLTO=false
.
./gradlew assembleBase -PenableLTO=false`
Nota: La construcción de la variante Base
siempre generaría el núcleo del reino.
Nota: Las optimizaciones entre procedimientos están habilitadas de forma predeterminada.
Nota: Si desea compilar desde el código fuente dentro de Android Studio, debe actualizar los parámetros de Gradle ingresando a la configuración de proyectos de Realm Settings > Build, Execution, Deployment > Compiler > Command-line options
y agregue -PbuildCore=true
o -PenableLTO=false
. Alternativamente, puedes agregarlo a tu gradle.properties
:
buildCore=true
enableLTO=false
Nota: Si compila en OSX, es posible que desee evitar que Gatekeeper bloquee todos los ejecutables del NDK deshabilitándolo: sudo spctl --master-disable
. Recuerda habilitarlo después: sudo spctl --master-enable
./gradlew tasks
mostrará todas las tareas disponibles./gradlew javadoc
generará los Javadocs./gradlew monkeyExamples
ejecutará las pruebas de mono en todos los ejemplos./gradlew installRealmJava
instalará la biblioteca Realm y el complemento en mavenLocal()./gradlew clean -PdontCleanJniFiles
eliminará todos los archivos generados excepto los archivos relacionados con JNI. Esto reduce mucho el tiempo de compilación../gradlew connectedUnitTests -PbuildTargetABIs=$(adb shell getprop ro.product.cpu.abi)
generará archivos JNI solo para la ABI que corresponde al dispositivo conectado. Estas pruebas requieren un servidor de objetos en ejecución (ver más abajo)Generar el Javadoc usando el comando anterior puede generar advertencias. El Javadoc se genera a pesar de las advertencias.
Todos los proyectos de Gradle en este repositorio tienen una tarea wrapper
para generar Gradle Wrappers. Esas tareas se refieren a la propiedad gradle
definida en /dependencies.list
para determinar la versión de Gradle para generar contenedores. Tenemos un script ./tools/update_gradle_wrapper.sh
para automatizar estos pasos. Cuando actualice Gradle Wrappers, siga los siguientes pasos.
gradle
definida en /dependencies.list
a la nueva versión de Gradle Wrapper./tools/update_gradle_wrapper.sh
.El repositorio está organizado en seis proyectos Gradle:
realm
: contiene la biblioteca real (incluida la capa JNI) y el procesador de anotaciones.realm-annotations
: contiene las anotaciones definidas por Realm.realm-transformer
: contiene el transformador de código de bytes.gradle-plugin
: contiene el complemento Gradle.examples
: contiene los proyectos de ejemplo. Este proyecto depende directamente del gradle-plugin
que agrega una dependencia a los artefactos producidos por realm
. Esto significa que ./gradlew clean
y ./gradlew cleanExamples
fallarán si assembleExamples
no se ha ejecutado primero. Tenga en cuenta que IntelliJ no admite varios proyectos en la misma ventana, por lo que cada uno de los seis proyectos de Gradle debe importarse como un proyecto IntelliJ independiente.
Dado que el repositorio contiene varios proyectos Gradle completamente independientes, se ejecutan varias compilaciones independientes para ensamblarlo. Ver una línea como: :realm:realm-library:compileBaseDebugAndroidTestSources UP-TO-DATE
en el registro de compilación no implica que pueda ejecutar ./gradlew :realm:realm-library:compileBaseDebugAndroidTestSources
.
La carpeta ./examples
contiene muchos proyectos de ejemplo que muestran cómo se puede utilizar Realm. Si es la primera vez que compra o extrae una nueva versión de este repositorio para probar los ejemplos, primero debe llamar a ./gradlew installRealmJava
desde el directorio de nivel superior. De lo contrario, los ejemplos no se compilarán ya que dependen de que todos los artefactos de Realm estén instalados en mavenLocal()
.
Se pueden descargar ejemplos independientes desde el sitio web.
Para ejecutar estas pruebas, debe tener un dispositivo conectado a la computadora de compilación y el comando adb
debe estar en su PATH
Conecte un dispositivo Android y verifique que el comando adb devices
muestre un dispositivo conectado:
adb devices
List of devices attached
004c03eb5615429f device
Ejecutar pruebas de instrumentación:
cd realm
./gradlew connectedBaseDebugAndroidTest
Estas pruebas pueden tardar hasta media hora en completarse.
Las pruebas en realm/realm-library/src/syncIntegrationTest
requieren un servidor de pruebas en ejecución para funcionar. Se puede crear una imagen de Docker desde tools/sync_test_server/Dockerfile
para ejecutar el servidor de prueba. tools/sync_test_server/start_server.sh
creará la imagen de la ventana acoplable automáticamente.
Para ejecutar un servidor de prueba localmente:
Instale Docker y ejecútelo.
Ejecute tools/sync_test_server/start_server.sh
:
cd tools/sync_test_server
./start_server.sh
Este comando no se completará hasta que el servidor se haya detenido.
Ejecutar pruebas de instrumentación
En una nueva ventana de terminal, ejecute:
cd realm
./gradlew connectedObjectServerDebugAndroidTest
Tenga en cuenta que si utiliza VirtualBox (Genymotion), la red debe estar conectada para que las pruebas funcionen. Esto se hace en VirtualBox > Network
. Configure el "Adaptador 2" en "Adaptador en puente".
Estas pruebas pueden tardar hasta media hora en completarse.
¡Consulte CONTRIBUTING.md para obtener más detalles!
Este proyecto se adhiere al Código de conducta de MongoDB. Al participar, se espera que respete este código. Informe cualquier comportamiento inaceptable a [email protected].
El directorio realm/config/studio
contiene archivos de estilo y pelusa recomendados para el código del proyecto. Importarlos desde Android Studio con Android Studio > Preferencias... > Estilo de código > Administrar... > Importar, o Android Studio > Preferencias... > Inspecciones > Administrar... > Importar. Una vez importado, seleccione el estilo/pelusa en el menú desplegable a la izquierda del botón Administrar....
Realm Java se publica bajo la licencia Apache 2.0.
Realm Core también se publica bajo la licencia Apache 2.0 y está disponible aquí.
Si usa Realm y está satisfecho con él, todo lo que le pedimos es que considere enviar un tweet mencionando a @realm para compartir sus pensamientos.
Y si no le gusta, háganos saber qué le gustaría mejorar para que podamos solucionarlo.