Realm は、携帯電話、タブレット、ウェアラブル内で直接実行されるモバイル データベースです。このリポジトリには、Realm の Java バージョンのソース コードが保持されています。Realm は現在 Android 上でのみ実行されます。
Realm Kotlin SDK は現在 GA であり、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"
すべてのシンボル定義 (および macOS を使用している場合はそれに付随するlaunchctl
コマンド) を~/.profile
(ログイン シェルが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
ではない) アクションを検索して選択します。選択したフォルダーのアイコンがオレンジ色になります (デフォルトのテーマの場合)。Realm Java のソース コードは git を使用してダウンロードできます。 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
バリアントをビルドすると、常にレルムコアがビルドされます。
注: プロシージャ間の最適化はデフォルトで有効になっています。
注: 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 Wrappers を生成するwrapper
タスクがあります。これらのタスクは、 /dependencies.list
で定義されたgradle
プロパティを参照して、生成するラッパーの 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 アーティファクトに依存するため、コンパイルされません。
スタンドアロンのサンプルは Web サイトからダウンロードできます。
これらのテストを実行するには、デバイスがビルド コンピューターに接続されており、 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
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」を「ブリッジアダプター」に設定します。
これらのテストが完了するまでに 30 分ほどかかる場合があります。
詳細については、CONTRIBUTING.md を参照してください。
このプロジェクトは MongoDB の行動規範に準拠しています。参加することにより、この規範を遵守することが期待されます。容認できない行為は、[email protected] に報告してください。
ディレクトリrealm/config/studio
プロジェクト コードに推奨される lint ファイルとスタイル ファイルが含まれています。これらを Android Studio からインポートするには、[Android Studio] > [設定...] > [コード スタイル] > [管理...] > [インポート]、または [Android Studio] > [設定...] > [インスペクション] > [管理...] > [インポート] を選択します。インポートしたら、「管理...」ボタンの左側にあるドロップダウンでスタイル/lint を選択します。
Realm Java は、Apache 2.0 ライセンスに基づいて公開されています。
Realm Core も Apache 2.0 ライセンスに基づいて公開されており、ここから入手できます。
Realm を使用していて満足している場合は、@realm について言及したツイートを送信して感想を共有することを検討してください。
気に入らない場合は、改善してほしい点をお知らせください。修正いたします。