记录日常问题

  • 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 ?= trueendif
# 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-infoendif
endif

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

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

adb root
adb remount
adb 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_PREOPT
DEX_PREOPT_DEFAULT ?= true

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

adb root
adb remount;
adb push framework.jar /system/framework/
adb push arm/ /system/framework/arm/
adb push arm64/ /system/framework/arm64/
//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-verity
adb reboot
//重启后
adb root
adb 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/angler
fastboot flashall
//单独烧写某个img
//刷写boot
fastboot flash boot boot.img
//刷写recovery
fastboot flash recovery recovery.img
//刷写system
fastboot flash system system.img
//刷写userdata
fastboot 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

Android 8.0 、9.0源码编译问题记录相关推荐

  1. 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

    文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...

  2. Android源码编译全过程记录(基于最新安卓5.1.0)【转】

    本文转载自:http://blog.csdn.net/drg1612/article/details/44802533 我的编译条件: 1 Ubuntu Kylin 14.04 长期支持版 下载地址 ...

  3. android源码模块编译错误,Android 源码编译错误记录

    构建环境 mac os 10.14.5 在构建过程中报如下错误: Could not find a supported mac sdk: ["10.10" "10.11& ...

  4. Android 4.1 (Jelly Bean) 源码编译过程总结

    昨天google官方发布了Android 4.1 Jelly Bean的源码,本人第一时间将源码托了下来(托了一个通宵),今天又花了一早上时间编译ROM并刷到自己的Galaxy Nexus中,虽说An ...

  5. mysql 5.6.29编译安装_MySQL-5.6.29源码编译安装记录

    一.安装环境 1. 操作系统:CentOS 6.7 x86_64 # yum install make cmake gcc gcc-c++ gcc-g77 flex bison file libtoo ...

  6. tensorflow源码编译教程_源码编译安装tensorflow 1.8

    参考官方指南 基本要求 官网测试过的源代码配置如下: image 也就是说,按照这个版本安装的话不应该再产生版本的问题了. 我的配置 ubuntu 16 python 2.7 nccl 2.3 gcc ...

  7. MySQL源码编译与初始化

    MySQL源码编译与初始化 链接:https://pan.baidu.com/s/1ANGg3Kd_28BzQrA5ya17fQ 提取码:ekpy 复制这段内容后打开百度网盘手机App,操作更方便哦 ...

  8. Android源码编译(基于Ubuntu18.0.4)

    文章目录 一.环境搭建 硬件要求 软件要求 操作系统和 JDK 主要软件包 软件安装 Git安装 repo工具安装 安装 openJDK 8 其他依赖安装 二.源码下载 建立源码文件夹 初始化仓库 源 ...

  9. Ubuntu16.04编译Android 6.0系统源码过程简要记录总结

    一,安装VMware Workstation,百度网盘下载(内含注册机) 链接: https://pan.baidu.com/s/1wz4hdNQBikTvyUMNokSVYg 提取码: yed7 V ...

最新文章

  1. HASHMAP(JDK1.7)最详细原理分析(二)
  2. MySQL默认配置文件位置发生改变后如何查找
  3. 8.0强行转换后变成了7_【自学C#】|| 笔记 12 数据类型转换
  4. linux程序设计---序
  5. SAP订单编排和流程增强概述
  6. 爬格子呀9.17(图论)
  7. 前端学习(3184):ant-design的button介绍按钮属性
  8. apache2+支持php7,Ubuntu14.04下配置PHP7.0+Apache2+Mysql5.7
  9. 论文浅尝 | 引入“引用”的语言模型
  10. 分治法在排序算法中的应用(JAVA)--快速排序(Lomuto划分、Hoare划分、随机化快排)
  11. python 获取当前是星期几_基金定投选星期几更划算?[python统计分析]
  12. java微调器_java-更改微调器标题栏样式
  13. 经典算法详解(2)寻找数组中的次大数
  14. 人工智能和大数据两者有什么联系
  15. 2021年机修钳工(中级)及机修钳工(中级)复审模拟考试
  16. 单双面打印价格一样吗_正式合同应该打印单面还是双面?
  17. select2 多选框
  18. 扫码枪扫码直接提交ajax,js监听页面扫码枪
  19. 计算机平面设计是计算机类吗,计算机平面设计是什么?平面设计就业前景怎么样?...
  20. 使用switch常量c语言,c语言switch(c语言switch语句用法)

热门文章

  1. Json对象转json数组
  2. 查看表空间已使用和剩余空间大小
  3. hdu 5148 Cities dp
  4. 信息系统项目管理案例分析
  5. 点云语义分割:pointnet++训练S3DIS数据集
  6. Pycharm启动后总 indices... indexing的问题
  7. 8.法律法规与标准化知识
  8. js滚动到指定位置显示或隐藏元素
  9. linux克隆步骤,CentOS克隆机器步骤,图文教程
  10. MATLAB 绘制堆叠柱状图