欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

打印机项目增加打坏算法后第一次打成系统包所遇到的坑

程序员文章站 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目录下。并且当系统启动时会扫描所有非系统应用,如果发现有和系统应用包名相同,校验通过并且版本更高,则会认为该应用为这个系统应用的升级版

相关标签: 系统apk的那些坑