当我将Room Persistence库添加到库中时,无法从.aar文件加载类

时间:2019-02-21 16:40:14

标签: android sqlite android-sqlite android-library android-multidex

我当前正在开发一个警报库,该库需要在sqlite数据库中存储多个警报详细信息。 因此,我将Google的Room Persistence库与警报库一起使用。

我在build.gradle中添加了以下代码。

Field.initial

我添加了数据库类

|                                                       |  value assigned to Field.initial  |
|-----------------|----------|--------------------------|-------|--------|-------|----------|
| model field     | through  | associated form field    | obj   | obj.id | [obj] | [obj.id] |
|-----------------|----------|--------------------------|-------|--------|-------|----------|
| OneToOneField   | n/a      | ModelChoiceField         | 1 & 2 | 1 & 2  | 2     | 1 & 2    |
| ForeignKey      | n/a      | ModelChoiceField         | 1 & 2 | 1 & 2  | 2     | 1 & 2    |
| ManyToManyField | explicit | ModelChoiceField         | 1     | 1      | 2     | 1 & 2    |
| ManyToManyField | implicit | ModelMultipleChoiceField | T     | T      | 1 & 2 | A        |

我还添加了数据访问对象

implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'

我正在如下所示在我的库的主类中创建一个数据库实例

@Database(entities = AlarmDetails.class, version = 1)
public abstract class AlarmDatabase extends RoomDatabase {

  public abstract AlarmDao alarmDao();
}

我正在从演示项目中调用上述构造函数,并按如下所示传递应用程序上下文

@Dao
public interface AlarmDao {

  @Insert(onConflict = OnConflictStrategy.REPLACE)
  void insert(AlarmDetails alarmDetails);

  @Update
  void update(AlarmDetails alarmDetails);

  @Delete
  void delete(AlarmDetails alarmDetails);

  @Query("SELECT * FROM alarms")
  List<AlarmDetails> getAll();
}

这是我的应用程序类

/*Constructor*/
public AlarmBase(Context mcontext,Context ncontext) {
    this.mContext = mcontext;

    alarmDatabase= Room.databaseBuilder(ncontext,
            AlarmDatabase.class, "alarm_db")
            .build();
}

但是当我运行项目时,出现以下错误

Context applicationContext=MyApplicationClass.getContext();
    alarmBase = new AlarmBase(this,applicationContext);

在将Room Persistence添加到我的图书馆之前,我能够与我的图书馆一起运行该项目

1 个答案:

答案 0 :(得分:0)

我也刚刚在项目的build.gradle(Module app)中添加了以下几行

implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'

效果很好