Feedback & Support
I have feedback for you…
Great! Let us know how we are doing and where we can improve the ObjectBox database. Drop us a line here: contact [at] objectbox.io.
I need help…
Did you check the documentation? We try to make our documentation as extensive as possible, but it’ll always be work-in-progress. If you did not find what you need, please post a question on Stack Overflow using the tag [objectbox]. Our team is monitoring this tag.
I think I found a bug…
Please open an issue on the issue tracker. Usually, it helps us a lot if you can narrow the issue down a bit and have a reproducible example.
I really need feature xyz…
We also track features requests on the issue tracker. Please make sure you do a quick search on the existing issues to check if the feature was requested before. If that is the case, a simple “+1” helps us understand its importance.
How can I help?
We’re still a small team and you can help us by providing feedback, getting in touch, providing help and tutorials to the community, recommending us to other developers, and last not least: Tweets, shares, and likes are always appreciated a lot too. 🙂
Does ObjectBox support object relations?
Yes. ObjectBox comes with strong relation support and offers features like “eager loading” for optimal performance.
Is ObjectBox a “zero copy” database? Are properties fetched lazily?
No. Strictly speaking, you cannot do this in Java. Also, copying data is only a minor factor in overall performance. In ObjectBox, objects are POJOs, and all properties will be properly initialized. Thus, there is no run time penalty for accessing properties and values do not change in unexpected ways when the database updates.
P.S.: Our C++ API offers zero copy and is crazy fast. Contact us for details.
Are there any threading constrictions?
No. The objects you get from ObjectBox are POJOs and you are safe to pass them around in threads.
On which platforms does ObjectBox run?
Android (4.0 and above), Linux (64 bit), Windows (64 bit). We are currently working on macOS, iOS and expect a release soon – drop us a line if you are interested.
Can I use ObjectBox on the desktop/server?
Our current focus is mobile and Android. But technically there is no objection to use ObjectBox on the desktop/server side. For server side usage, keep in mind that ObjectBox is an embedded database though. Contact us for details if you are interested in giving it a shot!
Can I use ObjectBox on smart IoT devices? Generally speaking: Yes. You can run the ObjectBox database on any IoT device that runs Linux. If you need to use the C++ API contact us (contact [at] objectbox.io).
How do I rename object properties or classes?
If you only do a rename on the language level, ObjectBox will by default remove the old and add a new entity/property. To do a rename, you must specify the UID.
How much does ObjectBox add to my APK size?
Around 1.5 MB if you package all CPU architectures and 0.5 MB if you can ABI split your APK. More importantly, ObjectBox adds little to Android’s method count since it’s written in native code. Details follow, for uncompressed library sizes see here.
Can I ship my app with a pre-built database?
Yes. ObjectBox stores all data in a single database file. Thus, you just need to prepare this DB file and copy it to the correct location on the first start of your app (before you touch ObjectBox’s API). The DB file is called “data.mdb” and is typically located in a subdirectory called “objectbox” (or any name you passed to BoxStoreBuilder). On Android, the DB file is located inside the app’s files directory inside “objectbox/objectbox/” or, for example “objectbox/yourname” if you assigned the custom name “yourname” using BoxStoreBuilder.
Is ObjectBox an alternative to SQLite, an alternative to Realm, an alternative to Room or…?
Generally speaking: Yes. Obviously, every approach brings its own advantages and disadvantages. One key difference between Room and SQLite / Realm / ObjectBox is, however, that it is an Object Relational Mapper (ORM) that runs on top of SQLite. Other ORM alternatives include greenDAO. See an early review of one of our users on ObjectBox vs. Realm vs. Room here.
Unresolved reference: MyObjectBox (class not found, etc.)
Make sure you do not have any other errors in your build. There have been problems reported in relation to “android-apt”, so remove it from your build if possible. For Kotlin, explicitly apply the kapt plugin (apply plugin: ‘kotlin-kapt’) before the ObjectBox plugin.
Merge conflict or DbException after concurrent data model modifications
If your team makes concurrent modifications to the data model (e.g. adding/removing entities or properties) it may clash with your changes. Read the meta model docs on how to resolve the conflicts.
DbException after switching git branch (no concurrent data model modifications)
You might get an exception like “DbException DB’s last entity ID 4 is higher than 3 from model” after switching back from a feature branch. This is expected. Let’s say you created a new entity on the feature branch and ran your app on the device. This will update the ObjectBox database on the device. ObjectBox keeps track of entity types internally (stores meta info). Now, when you return to your master branch, ObjectBox notices that new entity from the feature branch is missing. In other words, the database is on a newer version than the code. In general, this is a problematic scenario. For similar reasons, you can not downgrade apps via Google Play in general. It’s like time traveling to the future and going back. Thus, it is advised to clear the database to ensure all “data from the future” is gone. For more background on the topic, consult the meta model docs.
Couldn’t find “libobjectbox.so”
For Android, ObjectBox comes with binaries for “armeabi-v7a” and “arm64-v8a” ABIs. We consider “armeabi” to be outdated and thus do not support it. Check if you have a Gradle config like abiFilters "armeabi", which is causing the problem (e.g. remove it or change it to “armeabi-v7a”).
Version conflict with ‘com.google.code.findbugs:jsr305’
If you are doing Android instrumentation (especially with Espresso), you may get a warning like this:
Error:Conflict with dependency ‘com.google.code.findbugs:jsr305’ in project ‘:app’. Resolved versions for app (3.0.2) and test app (2.0.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
You can easily resolve the version conflict adding this Gradle dependency: androidTestCompile 'com.google.code.findbugs:jsr305:3.0.2' (background info).
Incompatible property type
Check the data model migration guide if you get an exception like this:
io.objectbox.exception.DbException: Property […] is not compatible to its previous definition. Check its type.
License / Open Source
We strongly believe in Open Source. With greenDAO and EventBus we have been contributing to open source for years. Therefore, we open sourced the Java end of ObjectBox under the Apache 2.0 license. We think it is the most interesting part for app developers. We will open source more components later, but first we need to figure out some things with ObjectBox. Please give us time on this. We’re currently putting all our efforts in advancing the product. Please contact us if you have questions about this (email contact [at] objectbox.io.). Thank you.
The current license is temporary only. We will adjust it to be easier and more pragmatic as soon as we can. If you see issues with the current license, please contact us. We’re sure, we can figure it out. We want you to succeed with ObjectBox, and the license should not be an issue.
ObjectBox is a free mobile database. We will roll out additional commercial services / products related to ObjectBox in the future. The ObjectBox mobile database will always be free.
Example for commercial services we might offer:
- Implementing features on top of the database that could be beneficial for your app and solve challenges you might have.
- Training and development: to get you started asap, we can come in and help you integrating ObjectBox in your specific context.