打印机项目增加打坏算法后第一次打成系统包所遇到的坑
程序员文章站
2022-06-12 18:35:20
...
1、新的apk提示升级失败
原因:新apk中缺少android:sharedUserId=“android.uid.system”
2.提示数据库已变更,但版本号未改变异常
原因:当数据库变更的时候需要增加版本号,并配置如下代码
public static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("CREATE TABLE IF NOT EXISTS table_break_record (" +
"_id INTEGER NOT NULL," +
"model_name TEXT ," +
"time INTEGER NOT NULL," +
"time_consuming INTEGER NOT NULL," +
" PRIMARY KEY(_id)" +
")");
}
};
@Singleton
@Provides
CodamaDb provideDb(CustomApp app) {
return Room.databaseBuilder(app, CodamaDb.class, "codama.db")
.addMigrations(MIGRATION_1_2)//重点
.build();
}
3、apk通过adb install或升级正常,但制作成刷机卡后就一直闪退,提示so库找不到
原因:adb push到system/app中时需要把用到的so库也push到/system/lib中,而通过安装能正常使用是因为,安装时应用时安装在data/app目录下,同时会把so库映射到data/app-lib目录下。并且当系统启动时会扫描所有非系统应用,如果发现有和系统应用包名相同,校验通过并且版本更高,则会认为该应用为这个系统应用的升级版