记录日常问题

  • 1 替换framework.jar不起作用
    • 第一种方法:不编译优化成odex
    • 第二种方法:不删除dex文件。
    • 其他一些使用的指令
  • 2 adb disable-verity
  • 3 unknown package name of class file
  • 4 fastboot 烧录指令
  • 5 设置系统语言默认为中文
  • 6 nexus 8.0刷机,重启后时间和上次时间不一致,差别大。
  • 7 nexus 8.0刷机,自动确定日期和时间无效
  • 8 nexus 8.0连接WiFi成功,但提示“已连接 但无法访问互联网”
  • 9 nexus 8.0 设置日期弹框以2007.1.1开始

清理make clean; make clobber 更严格。

1 替换framework.jar不起作用

使用nexus 烧录system后,单独替换framework.jar不起作用。
研究出两种解决方案。亲自测试有效。

第一种方法:不编译优化成odex

缺点:开机非常慢
默认情况在linux编译系统 会开启odex的。
build/make/core/dex_preopt.mk

# The default values for pre-opting: always preopt PIC.# Conditional to building on linux, as dex2oat currently does not work on darwin.ifeq ($(HOST_OS),linux)  WITH_DEXPREOPT ?= true# For an eng build only pre-opt the boot image. This gives reasonable performance and still# allows a simple workflow: building in frameworks/base and syncing.  ifeq (eng,$(TARGET_BUILD_VARIANT))    WITH_DEXPREOPT_BOOT_IMG_ONLY ?= true  endif# Add mini-debug-info to the boot classpath unless explicitly asked not to.  ifneq (false,$(WITH_DEXPREOPT_DEBUG_INFO))    PRODUCT_DEX_PREOPT_BOOT_FLAGS += --generate-mini-debug-info  endifendif

我们可以将WITH_DEXPREOPT修改成false,具体位置:
build/make/core/dex_preopt.mk 或者device/对应板级/BoardConfig.mk。

然后清理out目录,重新编译系统烧录,之后可以单独编译framework替换。

adb rootadb remountadb push framework.jar /system/framework/adb shell reboot

第二种方法:不删除dex文件。

默认DEX_PREOPT_DEFAULT为true,会删除apk、jar包中的classes.dex文件。值为nostripping时,不删除,这样编译的framework.jar不会只是1kb左右。

# The default value for LOCAL_DEX_PREOPTDEX_PREOPT_DEFAULT ?= true

修改方式:
WITH_DEXPREOPT保持为true,使用odex优化。
修改DEX_PREOPT_DEFAULT,设为nostripping。
如果有板级,可以在device/对应板级/BoardConfig.mk中添加,或者在
build/make/core/dex_preopt.mk
最好使重新编译系统镜像烧录,之后单独编译framework后。

adb rootadb remount;adb push framework.jar /system/framework/adb push arm/ /system/framework/adb push arm64/ /system/framework///9.0 walleye版本 需要更新一下vdex,否则可能系统启动失败adb push boot-framework.vdex /system/framework/adb shell reboot

不同版本rom,命令稍有不同,需要摸索。

其他一些使用的指令

设置不编译优化成odex:
1 .make showcommands WITH_DEXPREOPT=false
或者mm WITH_DEXPREOPT=false
2 单独模块 Android.mk添加LOCAL_DEX_PREOPT := false

2 adb disable-verity

重新烧录系统后,adb remount报以下错误:

Use "adb disable-verity" to disable verity.If you do not, remount may succeed, however, you will still not be able to write to these volumes.remount succeeded

虽然显示remount succeeded,但是依然不能写成功。

adb disable-verityadb reboot//重启后adb rootadb remount

3 unknown package name of class file

framework 下面添加了一些新的java文件。报错:unknown package name of class file。
在build/core/tasks/check_boot_jars/package_whitelist.txt
查看该文件发现PRODUCT_BOOT_JARS的其他jar的包名都有在这里定义,仿照文件格式把自己的包名添加到这里,重新编译ok!

4 fastboot 烧录指令

Android手机分区(每个分区都有相应的img文件对应):开机启动画面区(splash1),数据恢复区(recovery),内核区(boot),
系统区(system),数据缓存区(cache),用户数据区(userdata)。

//进入bootloader模式adb reboot bootloader//查找设备fastboot devices//烧写多个分区(boot recovery system vendor),并自动重启export ANDROID_PRODUCT_OUT=/home/py/android8.0/out/target/product/anglerfastboot flashall//单独烧写某个img//刷写bootfastboot flash boot boot.img//刷写recoveryfastboot flash recovery recovery.img//刷写systemfastboot flash system system.img//刷写userdatafastboot flash userdata userdata.img//重启fastboot reboot

5 设置系统语言默认为中文

1.android 系统的默认语言配置文件路径如下:
build/make/target/product/full_base.mk
在文件中找到变量 “PRODUCT_LOCALES”
然后修改为如下形式即可:
PRODUCT_LOCALES := zh_CN
2.删除多余的语言包
配置文件路径如下:
build/make/target/product/locales_full.mk
在文件中找到变量"PRODUCT_LOCALES"
把不需要的语言删除就好,例如:
PRODUCT_LOCALES := en_US zh_HK zh_CN

6 nexus 8.0刷机,重启后时间和上次时间不一致,差别大。

烧录vendor.img后,重启时间没有问题。
以angler OPR6.170623.0.19为例

./extract-qcom-angler.sh//输入I ACCEPT./extract-huawei-angler.sh//输入I ACCEPT

之后make编译会编译出vendor.img.烧录即可。

7 nexus 8.0刷机,自动确定日期和时间无效

adb shell settings put global ntp_server ntp7.aliyun.com
然后重启设备。

8 nexus 8.0连接WiFi成功,但提示“已连接 但无法访问互联网”

需要先将系统时间手动修改正确。
adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
重启或者开关飞行模式。

9 nexus 8.0 设置日期弹框以2007.1.1开始

设置-日期和时间-设置日期–弹框默认使2007.01.01,修改成2020.0101.
package/apps/Settings/src/com/android/settings/datetime/DatePreferenceController.java

更多相关文章

  1. 【转】android sqlite支持的数据类型
  2. input subsystem
  3. android编译系统(一):GUN Make简介
  4. 用Android(安卓)Studio3.0新功能加快构建速度
  5. Android(安卓)Do not keep activities选项分析
  6. Android(安卓)Binder Mechanism (4) -- 如何使用已注册的系统Ser
  7. nodejs的交叉(跨平台)编译(to android)
  8. debug android 系统方式

随机推荐

  1. 《Oracle DBA工作笔记》第二章 常用工具
  2. 理论实践:循序渐进理解AWR细致入微分析性
  3. 【故障处理】 DBCA建库报错CRS-2566
  4. 【JS基础入门】JavaScript基础之事件的操
  5. 如何让百度收录我们自己的网站呢?
  6. vscode编辑器和插件安装及markdown语法熟
  7. SwiftUI - 百行代码变十行,Swift再创辉煌!
  8. Kubernetes 运维学习笔记
  9. Linux下smokeping网络监控环境部署记录
  10. Gitblit版本服务器环境部署记录