Popularity
2.9
Stable
Activity
0.0
Stable
135
6
23

Description

An Android helper class to manage database creation and version management using an application's raw asset files.

This library provides developers with a simple way to ship their Android app with an existing SQLite database (which may be pre-populated with data) and to manage its initial creation and any upgrades required with subsequent version releases.

It is implemented as an extension to Room, providing an easy way to use Room with an existing SQLite database.

Programming language: Kotlin
License: Apache License 2.0
Tags: Sqlite     Database     ORM    
Latest version: v1.0.3

RoomAsset alternatives and similar packages

Based on the "Database" category.
Alternatively, view RoomAsset alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of RoomAsset or a related project?

Add another 'Database' Package

README

Room now supports using a pre-packaged database out of the box, since version 2.2.0

https://developer.android.com/jetpack/androidx/releases/room#2.2.0

As the built-in Room support is limited here's a library that supports migration as well as keeping specified columns that eg contain userdata.

https://github.com/ueen/RoomAssetHelper

RoomAsset

An Android helper class to manage database creation and version management using an application's raw asset files.

This library provides developers with a simple way to ship their Android app with an existing SQLite database (which may be pre-populated with data) and to manage its initial creation and any upgrades required with subsequent version releases.

It is implemented as an extension to Room, providing an easy way to use Room with an existing SQLite database.


Gradle Dependency

Codacy Badge Android Arsenal License

Dependency

Add this to your module's build.gradle file (make sure the version matches the last release):

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Add the dependency

dependencies {
    // ... other dependencies
    implementation 'com.github.humazed:RoomAsset:1.0.3'
}

RoomAsset is intended as a drop in alternative for the framework's Room.

You can use RoomAsset as you use Room but with two changes:

  1. Use RoomAsset.databaseBuilder() instead of Room.databaseBuilder()
  2. In @Database use version = 2 instead of version = 1
  val db = RoomAsset.databaseBuilder(applicationContext, AppDatabase::class.java, "chinook.db").build()
  val employees = db.chinookDao().employees

RoomAsset relies upon asset file and folder naming conventions. Your assets folder will either be under your project root, or under src/main if you are using the default gradle project structure. At minimum, you must provide the following:

  • A databases folder inside assets
  • A SQLite database inside the databases folder whose file name matches the database name you provide in code (including the file extension, if any)

For the example above, the project would contain the following:

assets/databases/chinook.db

The database will be extracted from the assets and copied into place within your application's private data directory. If you prefer to store the database file somewhere else (such as external storage) you can use the alternate constructor to specify a storage path. You must ensure that this path is available and writable whenever your application needs to access the database.

  val db = RoomAsset.databaseBuilder(applicationContext, AppDatabase::class.java, "chinook.db",
        applicationContext.getExternalFilesDir(null).absolutePath).build()

The library will throw a SQLiteAssetHelperException if you do not provide the appropriately named file.

Supported data types: TEXT, INTEGER, REAL, BLOB

The sample project demonstrates a simple database creation and usage example using the classic Chinook database.

License

Copyright (C) 2011 readyState Software Ltd
Copyright (C) 2007 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


*Note that all licence references and agreements mentioned in the RoomAsset README section above are relevant to that project's source code only.