Realm คือฐานข้อมูลมือถือที่ทำงานโดยตรงภายในโทรศัพท์ แท็บเล็ต หรืออุปกรณ์สวมใส่ พื้นที่เก็บข้อมูลนี้เก็บซอร์สโค้ดสำหรับ Realm เวอร์ชัน Java ซึ่งปัจจุบันทำงานบน Android เท่านั้น
ขณะนี้ Realm Kotlin SDK เป็นแบบ GA แล้ว และใช้ได้กับทั้ง Android และ Kotlin Multiplatform ในขณะที่เรายังคงเพิ่มฟีเจอร์ต่างๆ โปรดพิจารณาใช้ Realm Kotlin สำหรับโปรเจ็กต์ใหม่ และแจ้งให้เราทราบหากคุณพลาดสิ่งใดไป!
โปรดดูคำแนะนำโดยละเอียดในเอกสารของเราเพื่อเพิ่ม Realm ให้กับโปรเจ็กต์ของคุณ
สามารถดูเอกสารประกอบสำหรับ Realm ได้ที่ mongodb.com/docs/atlas/device-sdks/sdk/java/ ข้อมูลอ้างอิง API อยู่ที่ mongodb.com/docs/atlas/device-sdks/sdk/java/api/
หากคุณต้องการทดสอบการแก้ไขข้อบกพร่องหรือฟีเจอร์ล่าสุดที่ยังไม่ได้บรรจุในรีลีสอย่างเป็นทางการ คุณสามารถใช้ -SNAPSHOT release ของ Realm เวอร์ชันพัฒนาปัจจุบันผ่าน Gradle ซึ่งมีอยู่ใน 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 ด้วยตนเองจากแหล่งที่มาได้
ดาวน์โหลด JDK 8 จาก Oracle และติดตั้ง
Android Studio เวอร์ชันเสถียรล่าสุด ปัจจุบัน 4.1.1
ดาวน์โหลดและติดตั้ง Android SDK Build-Tools 29.0.3 , Android Pie (API 29) (เช่น ผ่าน Android SDK Manager ของ Android Studio)
ติดตั้ง CMake เวอร์ชัน 3.18.4 และสร้าง Ninja
ติดตั้ง NDK (เคียงข้างกัน) 21.0.6113669 จาก SDK Manager ใน Android Studio อย่าลืมทำเครื่องหมายที่ ☑ Show package details
ในตัวจัดการเพื่อแสดงเวอร์ชันที่มีอยู่ทั้งหมด
เพิ่มตัวแปรสภาพแวดล้อมภายในบ้านของ Android ให้กับโปรไฟล์ของคุณ:
export ANDROID_HOME=~/Library/Android/sdk
หากคุณเปิด Android Studio จาก macOS Finder คุณควรเรียกใช้คำสั่งต่อไปนี้ด้วย:
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
ของคุณ (หรือ ~/.zprofile
หากเชลล์การเข้าสู่ระบบคือ zsh
)
หากคุณพัฒนา Realm Java ด้วย Android Studio เราขอแนะนำให้คุณแยกบางไดเร็กทอรีออกจากเป้าหมายการจัดทำดัชนีโดยดำเนินการตามขั้นตอนต่อไปนี้บน Android Studio มันช่วยเร่งขั้นตอนการจัดทำดัชนีหลังการสร้างได้จริง
/realm/realm-library/
เลือก build
, .cxx
และโฟลเดอร์ distribution
ในมุมมอง Project
Command + Shift + A
เพื่อเปิดกล่องโต้ตอบ Find action
หากคุณไม่ได้ใช้คีย์แมปเริ่มต้นหรือใช้ macOS คุณสามารถค้นหาคีย์ลัดของคุณได้ในการตั้งค่า Keymap
โดยการค้นหา Find action
Excluded
(not 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
เมื่อคุณเสร็จสิ้นข้อกำหนดเบื้องต้นทั้งหมดแล้ว การสร้างอาณาจักรก็เสร็จสิ้นด้วยคำสั่งง่ายๆ
./gradlew assemble
คำสั่งนั้นจะสร้าง:
การสร้างแบบเต็มอาจใช้เวลาหนึ่งชั่วโมงหรือมากกว่าจึงจะเสร็จสมบูรณ์
เป็นไปได้ที่จะสร้าง Realm Java ด้วย Realm Core เวอร์ชันย่อย ซึ่งทำได้โดยการจัดเตรียมพารามิเตอร์ต่อไปนี้เมื่อสร้าง: -PbuildCore=true
./gradlew assembleBase -PbuildCore=true
คุณสามารถปิดการปรับให้เหมาะสมระหว่างโพรซีเดอร์ได้โดยใช้พารามิเตอร์ต่อไปนี้: -PenableLTO=false
./gradlew assembleBase -PenableLTO=false`
หมายเหตุ: การสร้างตัวแปร Base
จะสร้าง realm-core เสมอ
หมายเหตุ: การเพิ่มประสิทธิภาพระหว่างโพรซีเดอร์ถูกเปิดใช้งานตามค่าเริ่มต้น
หมายเหตุ: หากคุณต้องการสร้างจากแหล่งที่มาภายใน Android Studio คุณต้องอัปเดตพารามิเตอร์ Gradle โดยไปที่การตั้งค่าโปรเจ็กต์ 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)
จะสร้างไฟล์ JNI สำหรับ ABI เท่านั้นซึ่งสอดคล้องกับอุปกรณ์ที่เชื่อมต่อ การทดสอบเหล่านี้จำเป็นต้องมี Object Server ที่ทำงานอยู่ (ดูด้านล่าง)การสร้าง Javadoc โดยใช้คำสั่งด้านบนอาจสร้างคำเตือน Javadoc ถูกสร้างขึ้นแม้จะมีคำเตือนก็ตาม
โปรเจ็กต์การไล่ระดับทั้งหมดในพื้นที่เก็บข้อมูลนี้มีภารกิจ wrapper
เพื่อสร้าง Gradle Wrappers งานเหล่านั้นอ้างถึงคุณสมบัติ gradle
ที่กำหนดไว้ใน /dependencies.list
เพื่อกำหนดเวอร์ชัน Gradle ของการสร้าง wrappers เรามีสคริปต์ ./tools/update_gradle_wrapper.sh
เพื่อทำให้ขั้นตอนเหล่านี้เป็นไปโดยอัตโนมัติ เมื่อคุณอัปเดต Gradle Wrappers โปรดปฏิบัติตามขั้นตอนต่อไปนี้
gradle
ที่กำหนดไว้ใน /dependencies.list
เป็น Gradle Wrapper เวอร์ชันใหม่/tools/update_gradle_wrapper.sh
พื้นที่เก็บข้อมูลแบ่งออกเป็นหกโครงการ Gradle:
realm
: ประกอบด้วยไลบรารีจริง (รวมถึงเลเยอร์ JNI) และตัวประมวลผลคำอธิบายประกอบrealm-annotations
: ประกอบด้วยคำอธิบายประกอบที่กำหนดโดย Realmrealm-transformer
: มันมีหม้อแปลง bytecodegradle-plugin
: มันมีปลั๊กอิน Gradleexamples
: ประกอบด้วยโครงการตัวอย่าง โครงการนี้ขึ้นอยู่กับ gradle-plugin
โดยตรงซึ่งเพิ่มการพึ่งพาสิ่งประดิษฐ์ที่ผลิตโดย realm
ซึ่งหมายความว่า ./gradlew clean
และ ./gradlew cleanExamples
จะล้มเหลวหากไม่ได้ดำเนินการ assembleExamples
ก่อน โปรดทราบว่า IntelliJ ไม่สนับสนุนหลายโครงการในหน้าต่างเดียวกัน ดังนั้นแต่ละโครงการจากหกโครงการ Gradle จะต้องนำเข้าเป็นโครงการ IntelliJ แยกต่างหาก
เนื่องจากพื้นที่เก็บข้อมูลมีโปรเจ็กต์ Gradle ที่เป็นอิสระอย่างสมบูรณ์หลายโปรเจ็กต์ จึงมีการเรียกใช้งานบิลด์อิสระหลายรายการเพื่อประกอบเข้าด้วยกัน การเห็นบรรทัดเช่น: :realm:realm-library:compileBaseDebugAndroidTestSources UP-TO-DATE
ในบันทึกการสร้าง ไม่ได้ หมายความว่าคุณสามารถเรียกใช้ ./gradlew :realm:realm-library:compileBaseDebugAndroidTestSources
โฟลเดอร์ ./examples
มีโปรเจ็กต์ตัวอย่างมากมายที่แสดงให้เห็นว่าสามารถใช้ Realm ได้อย่างไร หากนี่เป็นครั้งแรกที่คุณชำระเงินหรือดึงเวอร์ชันใหม่ของที่เก็บนี้เพื่อลองใช้ตัวอย่าง คุณต้องเรียก ./gradlew installRealmJava
จากไดเร็กทอรีระดับบนสุดก่อน มิฉะนั้น ตัวอย่างจะไม่คอมไพล์เนื่องจากขึ้นอยู่กับสิ่งประดิษฐ์ของ Realm ทั้งหมดที่ติดตั้งใน mavenLocal()
สามารถดาวน์โหลดตัวอย่างแบบสแตนด์อโลนได้จากเว็บไซต์
หากต้องการรันการทดสอบเหล่านี้ คุณต้องมีอุปกรณ์เชื่อมต่อกับคอมพิวเตอร์บิลด์ และคำสั่ง 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
เพื่อรันเซิร์ฟเวอร์ทดสอบ 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" เป็น "อะแดปเตอร์บริดจ์"
การทดสอบเหล่านี้อาจใช้เวลานานถึงครึ่งชั่วโมงจึงจะเสร็จสมบูรณ์
ดู CONTRIBUTING.md สำหรับรายละเอียดเพิ่มเติม!
โครงการนี้ปฏิบัติตามหลักจรรยาบรรณของ MongoDB ในการเข้าร่วม คุณจะต้องรักษารหัสนี้ กรุณารายงานพฤติกรรมที่ยอมรับไม่ได้ไปที่ [email protected]
ไดเร็กทอรี realm/config/studio
มีไฟล์ lint และ style ที่แนะนำสำหรับโค้ดโปรเจ็กต์ นำเข้าจาก Android Studio ด้วย Android Studio > การตั้งค่า... > ลักษณะโค้ด > จัดการ... > นำเข้า หรือ Android Studio > การตั้งค่า... > การตรวจสอบ > จัดการ... > นำเข้า เมื่อนำเข้าแล้ว ให้เลือกสไตล์/ผ้าสำลีในรายการแบบเลื่อนลงทางด้านซ้ายของปุ่มจัดการ...
Realm Java ได้รับการเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0
Realm Core ได้รับการเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 และมีให้ที่นี่
หากคุณใช้ Realm และพอใจกับมัน สิ่งที่เราขอก็คือคุณ โปรดพิจารณาส่งทวีตที่กล่าวถึง @realm เพื่อแบ่งปันความคิดของคุณ!
และหากคุณไม่ชอบ โปรดแจ้งให้เราทราบสิ่งที่คุณต้องการปรับปรุง เพื่อให้เราแก้ไขได้!