Realm 是一個直接在手機、平板電腦或穿戴式裝置內運作的行動資料庫。該儲存庫包含 Java 版本 Realm 的原始程式碼,目前僅在 Android 上運行。
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/。
如果您想測試最近的錯誤修復或尚未打包在正式版本中的功能,您可以透過 Gradle 使用 Realm 目前開發版本的-SNAPSHOT版本,該版本可在 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()
}
}
請參閱 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 管理員安裝 NDK(並排) 21.0.6113669 。請記住選取☑ Show package details
以顯示所有可用版本。
將 Android home 環境變數新增到您的設定檔中:
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"
最好將所有符號定義(以及它們附帶的launchctl
命令,如果您使用的是 macOS)添加到~/.profile
(如果登入 shell 是zsh
則新增至~/.zprofile
)
如果您使用 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
該命令將生成:
完整的建造可能需要一個小時或更長時間才能完成。
可以使用 Realm Core 的子模組版本來建構 Realm Java。這是透過在建置時提供以下參數來完成的: -PbuildCore=true
。
./gradlew assembleBase -PbuildCore=true
您可以使用下列參數關閉過程間最佳化: -PenableLTO=false
。
./gradlew assembleBase -PenableLTO=false`
注意:建立Base
變體將始終建立領域核心。
注意:預設啟用過程間最佳化。
注意:如果您想在 Android Studio 內從原始程式碼構建,則需要透過進入 Realm 專案設定Settings > Build, Execution, Deployment > Compiler > Command-line options
並新增-PbuildCore=true
或-PenableLTO=false
的。或者,您可以將其新增至gradle.properties
:
buildCore=true
enableLTO=false
注意:如果在 OSX 上構建,您可能希望透過停用 Gatekeeper 來阻止所有 NDK 可執行檔: sudo spctl --master-disable
。請記住隨後啟用它: sudo spctl --master-enable
./gradlew tasks
將顯示所有可用的任務./gradlew javadoc
將生成 Javadocs./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 項目都有wrapper
任務來產生 Gradle 包裝器。這些任務引用/dependencies.list
中定義的gradle
屬性來決定生成包裝器的 Gradle 版本。我們有一個腳本./tools/update_gradle_wrapper.sh
來自動執行這些步驟。當您更新 Gradle Wrappers 時,請遵循以下步驟。
/dependencies.list
中定義的gradle
屬性編輯為新的 Gradle Wrapper 版本。/tools/update_gradle_wrapper.sh
。此儲存庫分為六個 Gradle 項目:
realm
:它包含實際的函式庫(包括 JNI 層)和註解處理器。realm-annotations
:它包含 Realm 定義的註解。realm-transformer
:它包含字節碼轉換器。gradle-plugin
:它包含 Gradle 插件。examples
:它包含範例項目。該專案直接依賴gradle-plugin
,它添加了對realm
產生的工件的依賴關係。這意味著如果assembleExamples
尚未先執行,則./gradlew clean
和./gradlew cleanExamples
將失敗。請注意,IntelliJ 不支援同一視窗中的多個項目,因此六個 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
這些測試可能需要長達半小時才能完成。
realm/realm-library/src/syncIntegrationTest
中的測試需要正在執行的測試伺服器才能運作。可以從tools/sync_test_server/Dockerfile
建置 docker 映像來執行測試伺服器。 tools/sync_test_server/start_server.sh
將自動建置 docker 映像。
要在本機上運行測試伺服器:
安裝 docker 並運行它。
執行tools/sync_test_server/start_server.sh
:
cd tools/sync_test_server
./start_server.sh
在伺服器停止之前,此命令不會完成。
運行儀器測試
在新的終端機視窗中,運行:
cd realm
./gradlew connectedObjectServerDebugAndroidTest
請注意,如果使用 VirtualBox (Genymotion),則需要橋接網路才能使測試正常運作。這是在VirtualBox > Network
中完成的。將“適配器 2”設定為“橋接適配器”。
這些測試可能需要長達半小時才能完成。
請參閱 CONTRIBUTING.md 以了解更多詳細資訊!
該項目遵守 MongoDB 行為準則。透過參與,您應該遵守此準則。請將不可接受的行為回報至[email protected]。
目錄realm/config/studio
包含建議用於專案程式碼的 lint 和樣式檔案。使用 Android Studio > Preferences... > Code Style > Manage... > Import 或 Android Studio > Preferences... > Inspections > Manage... > Import 從 Android Studio 匯入它們。匯入後,在「管理...」按鈕左側的下拉清單中選擇樣式/lint。
Realm Java 在 Apache 2.0 許可證下發布。
Realm Core 也是根據 Apache 2.0 許可證發布的,可在此處取得。
如果您使用 Realm 並對它感到滿意,我們只要求您考慮發送一條提及 @realm 的推文來分享您的想法!
如果您不喜歡它,請告訴我們您希望改進什麼,以便我們可以修復它!