Realm은 휴대폰, 태블릿, 웨어러블 기기 내에서 직접 실행되는 모바일 데이터베이스입니다. 이 저장소에는 현재 Android에서만 실행되는 Java 버전 Realm의 소스 코드가 들어 있습니다.
Realm Kotlin SDK는 이제 정식 버전으로 출시되었으며 Android와 Kotlin 멀티플랫폼 모두에서 사용할 수 있습니다. 기능을 추가하는 동안 새 프로젝트에 Realm Kotlin을 사용하는 것을 고려해 보시고, 누락된 부분이 있으면 알려주시기 바랍니다!
프로젝트에 Realm을 추가하려면 문서의 자세한 지침을 참조하세요.
Realm에 대한 문서는 mongodb.com/docs/atlas/device-sdks/sdk/java/에서 찾을 수 있습니다. API 참조는 mongodb.com/docs/atlas/device-sdks/sdk/java/api/에 있습니다.
아직 공식 릴리스에 패키지되지 않은 최신 버그 수정이나 기능을 테스트하려면 Sonatype OSS에서 사용할 수 있는 Gradle을 통해 Realm의 현재 개발 버전의 -SNAPSHOT 릴리스를 사용할 수 있습니다.
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()
}
}
최신 버전 번호는 version.txt를 참조하세요.
미리 컴파일된 버전을 사용하고 싶지 않은 경우 소스에서 Realm을 직접 빌드할 수 있습니다.
Oracle에서 JDK 8을 다운로드하여 설치합니다.
Android Studio의 최신 안정 버전입니다. 현재 4.1.1.
Android SDK Build-Tools 29.0.3 , Android Pie(API 29)를 다운로드하여 설치합니다(예: Android Studio의 Android SDK Manager를 통해).
CMake 버전 3.18.4를 설치하고 Ninja를 빌드하세요.
Android Studio의 SDK Manager에서 NDK(Side-by-side) 21.0.6113669 를 설치합니다. 사용 가능한 모든 버전을 표시하려면 관리자에 ☑ Show package details
선택해야 합니다.
프로필에 Android 홈 환경 변수를 추가합니다.
export ANDROID_HOME=~/Library/Android/sdk
macOS Finder에서 Android Studio를 실행하는 경우 다음 명령도 실행해야 합니다.
launchctl setenv ANDROID_HOME "$ANDROID_HOME"
Realm Core의 아카이브를 저장할 위치를 지정하려면 REALM_CORE_DOWNLOAD_DIR
환경 변수를 정의하세요. 핵심 릴리스 아티팩트 캐싱을 활성화합니다.
export REALM_CORE_DOWNLOAD_DIR=~/.realmCore
macOS 사용자는 이 환경 변수를 보려면 Android Studio에 대해 다음 명령을 실행해야 합니다.
launchctl setenv REALM_CORE_DOWNLOAD_DIR "$REALM_CORE_DOWNLOAD_DIR"
~/.profile
(또는 로그인 셸이 zsh
인 경우 ~/.zprofile
)에 모든 기호 정의(및 macOS를 사용하는 경우 그에 수반되는 launchctl
명령)를 추가하는 것이 좋습니다.
Android Studio로 Realm Java를 개발하는 경우 Android Studio에서 다음 단계를 실행하여 일부 디렉터리를 인덱싱 대상에서 제외하는 것이 좋습니다. 빌드 후 인덱싱 단계의 속도가 실제로 빨라집니다.
/realm/realm-library/
아래의 Project
보기에서 build
, .cxx
및 distribution
폴더를 선택합니다.Command + Shift + A
눌러 Find action
대화 상자를 엽니다. 기본 키맵을 사용하지 않거나 macOS를 사용하지 않는 경우 Find action
검색하여 Keymap
환경설정에서 바로가기 키를 찾을 수 있습니다.Excluded
( Exclude
아님) 작업을 검색하고 선택합니다. 선택한 폴더 아이콘은 주황색(기본 테마)으로 변해야 합니다. git을 사용하여 Realm Java의 소스 코드를 다운로드할 수 있습니다. realm-java에는 git 하위 모듈이 있으므로 저장소를 복제할 때 --recursive
사용하세요.
git clone [email protected]:realm/realm-java.git --recursive
또는
git clone https://github.com/realm/realm-java.git --recursive
모든 사전 요구 사항을 완료하면 Realm 구축이 간단한 명령으로 완료됩니다.
./gradlew assemble
해당 명령은 다음을 생성합니다.
전체 빌드를 완료하는 데 1시간 이상이 걸릴 수 있습니다.
Realm Core의 하위 모듈 버전을 사용하여 Realm Java를 빌드하는 것이 가능합니다. 이는 빌드 시 -PbuildCore=true
매개변수를 제공하여 수행됩니다.
./gradlew assembleBase -PbuildCore=true
-PenableLTO=false
매개변수를 사용하여 프로시저 간 최적화를 끌 수 있습니다.
./gradlew assembleBase -PenableLTO=false`
참고: Base
변형을 빌드하면 항상 realm-core가 빌드됩니다.
참고: 프로시저 간 최적화는 기본적으로 활성화되어 있습니다.
참고: Android Studio 내부의 소스에서 빌드하려면 Realm 프로젝트 설정 Settings > Build, Execution, Deployment > Compiler > Command-line options
으로 이동하여 -PbuildCore=true
또는 -PenableLTO=false
추가하여 Gradle 매개변수를 업데이트해야 합니다. -PenableLTO=false
이에요. 또는 gradle.properties
에 추가할 수 있습니다.
buildCore=true
enableLTO=false
참고: OSX에서 빌드하는 경우 Gatekeeper를 비활성화하여 모든 NDK 실행 파일을 차단하지 못하게 할 수 있습니다( sudo spctl --master-disable
. 나중에 활성화하는 것을 잊지 마세요: sudo spctl --master-enable
./gradlew tasks
사용 가능한 모든 작업을 표시합니다../gradlew javadoc
Javadoc을 생성합니다../gradlew monkeyExamples
모든 예제에 대해 원숭이 테스트를 실행합니다../gradlew installRealmJava
Realm 라이브러리와 플러그인을 mavenLocal()에 설치합니다../gradlew clean -PdontCleanJniFiles
JNI 관련 파일을 제외하고 생성된 모든 파일을 제거합니다. 이렇게 하면 재컴파일 시간이 많이 단축됩니다../gradlew connectedUnitTests -PbuildTargetABIs=$(adb shell getprop ro.product.cpu.abi)
연결된 장치에 해당하는 ABI에 대해서만 JNI 파일을 빌드합니다. 이 테스트에는 실행 중인 개체 서버가 필요합니다(아래 참조).위 명령을 사용하여 Javadoc을 생성하면 경고가 발생할 수 있습니다. 경고에도 불구하고 Javadoc이 생성됩니다.
이 저장소의 모든 Gradle 프로젝트에는 Gradle 래퍼를 생성하는 wrapper
작업이 있습니다. 이러한 작업은 래퍼 생성의 Gradle 버전을 결정하기 위해 /dependencies.list
에 정의된 gradle
속성을 참조합니다. 이러한 단계를 자동화하는 스크립트 ./tools/update_gradle_wrapper.sh
가 있습니다. Gradle Wrappers를 업데이트할 때 다음 단계를 따르세요.
/dependencies.list
에 정의된 gradle
속성을 새 Gradle Wrapper 버전으로 편집합니다./tools/update_gradle_wrapper.sh
실행합니다.저장소는 6개의 Gradle 프로젝트로 구성됩니다.
realm
: 실제 라이브러리(JNI 레이어 포함)와 주석 프로세서를 포함합니다.realm-annotations
: Realm에서 정의한 주석을 포함합니다.realm-transformer
: 바이트코드 변환기를 포함합니다.gradle-plugin
: Gradle 플러그인이 포함되어 있습니다.examples
: 예제 프로젝트가 포함되어 있습니다. 이 프로젝트는 realm
에서 생성된 아티팩트에 종속성을 추가하는 gradle-plugin
에 직접적으로 의존합니다. 이는 assembleExamples
먼저 실행되지 않으면 ./gradlew clean
및 ./gradlew cleanExamples
실패함을 의미합니다. IntelliJ는 동일한 창에서 여러 프로젝트를 지원하지 않으므로 6개의 Gradle 프로젝트 각각을 별도의 IntelliJ 프로젝트로 가져와야 합니다.
저장소에는 완전히 독립적인 Gradle 프로젝트가 여러 개 포함되어 있으므로 이를 조합하기 위해 여러 개의 독립적인 빌드가 실행됩니다. 빌드 로그에 :realm:realm-library:compileBaseDebugAndroidTestSources UP-TO-DATE
와 같은 줄이 표시된다고 해서 ./gradlew :realm:realm-library:compileBaseDebugAndroidTestSources
실행할 수 있다는 의미는 아닙니다 .
./examples
폴더에는 Realm 사용 방법을 보여주는 많은 예제 프로젝트가 포함되어 있습니다. 예제를 시도하기 위해 이 저장소의 새 버전을 처음 체크아웃하거나 가져오는 경우 먼저 최상위 디렉터리에서 ./gradlew installRealmJava
호출해야 합니다. 그렇지 않으면 mavenLocal()
에 설치된 모든 Realm 아티팩트에 의존하기 때문에 예제가 컴파일되지 않습니다.
독립형 예제는 웹사이트에서 다운로드할 수 있습니다.
이러한 테스트를 실행하려면 기기가 빌드 컴퓨터에 연결되어 있어야 하며 adb
명령이 PATH
에 있어야 합니다.
Android 장치를 연결하고 adb devices
명령이 연결된 장치를 표시하는지 확인합니다.
adb devices
List of devices attached
004c03eb5615429f device
계측 테스트를 실행합니다.
cd realm
./gradlew connectedBaseDebugAndroidTest
이러한 테스트는 완료하는 데 30분 정도 걸릴 수 있습니다.
realm/realm-library/src/syncIntegrationTest
의 테스트가 작동하려면 실행 중인 테스트 서버가 필요합니다. tools/sync_test_server/Dockerfile
에서 Docker 이미지를 빌드하여 테스트 서버를 실행할 수 있습니다. tools/sync_test_server/start_server.sh
도커 이미지를 자동으로 빌드합니다.
테스트 서버를 로컬에서 실행하려면:
도커를 설치하고 실행해 보세요.
tools/sync_test_server/start_server.sh
실행:
cd tools/sync_test_server
./start_server.sh
이 명령은 서버가 중지될 때까지 완료되지 않습니다.
계측 테스트 실행
새 터미널 창에서 다음을 실행합니다.
cd realm
./gradlew connectedObjectServerDebugAndroidTest
VirtualBox(Genymotion)를 사용하는 경우 테스트가 작동하려면 네트워크를 브리지해야 합니다. 이는 VirtualBox > Network
에서 수행됩니다. "어댑터 2"를 "브리지 어댑터"로 설정합니다.
이러한 테스트는 완료하는 데 30분 정도 걸릴 수 있습니다.
자세한 내용은 CONTRIBUTING.md를 참조하세요!
이 프로젝트는 MongoDB 행동 강령을 준수합니다. 참여함으로써 귀하는 이 코드를 유지해야 합니다. 용납되지 않는 행동을 [email protected]으로 신고해 주세요.
realm/config/studio
디렉터리에는 프로젝트 코드에 권장되는 Lint 및 스타일 파일이 포함되어 있습니다. Android Studio > Preferences... > Code Style > Manage... > Import 또는 Android Studio > Preferences... > Inspections > Manage... > Import를 사용하여 Android Studio에서 가져옵니다. 가져온 후에는 관리... 버튼 왼쪽의 드롭다운에서 스타일/린트를 선택합니다.
Realm Java는 Apache 2.0 라이센스에 따라 게시됩니다.
Realm Core는 Apache 2.0 라이선스로도 게시되어 있으며 여기에서 다운로드할 수 있습니다.
Realm을 사용하고 만족하신다면 @realm을 언급하는 트윗을 보내 여러분의 생각을 공유해 주시기 바랍니다!
마음에 들지 않으시면 개선하고 싶은 부분을 알려주시면 수정할 수 있도록 하겠습니다!