In ObjectBox 1.3 we made some changes under the hood to give developers a more powerful tooling. We recommend everybody to update. We’ve worked closely with developers of a complex app with millions of active users. At that scale, how can ObjectBox best support the development process? The 1.3.x releases (1.3.0 – 1.3.4) address this with extended debug logging, JSON data downloads, and many small but helpful improvements and fixes. This would not have been possible without your continued feedback. Thank you!
Debug logging improvements
This latest update includes improved log output for transactions and queries to make it easier to troubleshoot issues. For example, to log queries and query parameters set the following debug flags when building the box store:
boxStore = MyObjectBox.builder().androidContext(App.this)
.debugFlags(DebugFlags.LOG_QUERIES | DebugFlags.LOG_QUERY_PARAMETERS)
After running your app and triggering a query, you will see the log output like:
I/Box: Creating query #1 for Note with 1 condition(s)
I/Box: Finding using query #1
I/Box: Parameters for query #1:
date < 1513066077001
There are also additional flags to enable transaction logging. Transactions are now numbered so you can exactly match logs for beginning and committing transactions. Write transaction logging (LOG_TRANSACTIONS_WRITE) now also hints at potential write congestion scenarios: if you have long running transactions in a concurrent setup, the logs reveal any transaction start delays.
When using the object browser you will see a new download section in the bottom left. Clicking on ‘all’ will download all objects of the currently selected type in JSON format. This can help to track changes of complex data states, e.g. by diff-ing JSON files.
Version 1.3.4 adds a x86_64 binary of the ObjectBox library (in addition to more common arm64-v8a, armeabi-v7a and x86 ABIs). Note that this grows your APK a bit without further action. You can either opt to build multiple APKs for each ABI using APK splits. Or, if you do not want to have optimized x86_64 CPUs support (there’s a fallback to x86), you can explicitly exclude the relevant SO file using packaging options: