本帖最后由 yiyi1 于 2022-5-7 15:20 编辑
1. 概述
A64平台快速
移植文档,本文基于A64 tulip-t1方案。
1.1. 名词解释
1. vendor-name softwinner
2.
device-name tulip-t1
3.
product-name tulip_t1
2. 方案定制
方案目录 device/vendor-name/device-name/
2.1. overlay 说明
Android overlay 机制允许在不修改 apk 或者
Framework 源代码的情况下,实现资源的定制。
以下几类能够通过 overlay 机制定义:
1. Configurations (string, bool, bool-array)
2. Localization (string, string-array)
3. UI
APPearance (color, d
rawable,
layout, style, theme, animation)
4. Raw resources (
Audio,
video, xml)
2.1.1. 为产品添加 Overlay 目录
有两种不同的 overlay 目录定义:
1. PRODUCT_PACKAGE_OVERLAYS
用于指定产品
2. DEVICE_PACKAGE_OVERLAYS
用于同一设备模型的一系列产品
如果包含同一资源,那么 PRODUCT_PACKAGE_OVERLAYS 将覆盖 DEVICE_PACKAGE_OVERLAYS 。如果要定义多个 overlays 目录,需要用空格隔开,同一资源的定义,将使用先定义的目录中的资源。
在方案目录下创建 overlay 和 product-name/overlay 目录,分别用于 device 通用及 product 使用的 overlay 文件夹。
2.1.2. 改变 mk 文件来添加 overlays 的编译项 在文件 device/vendor-name/device-name/product-name.mk 中添加:
PRODUCT_PACKAGE_OVERLAYS := \ device/vendor-name/device-name/product-name/overlay \
$(PRODUCT_PACKAGE_OVERLAYS) DEVICE_PACKAGE_OVERLAYS := \ device/vendor-name/device-name/overlay \ $(DEVICE_PACKAGE_OVERLAYS)
注:
必须加上$(PRODUCT_PACKAGE_OVERLAYS)变量否则将找不到默认资源。
2.1.3. 在 overlay 目录下创建资源文件
在 overlay 目录下创建和要替换资源所在文件相同的路径的文件,此路径是相对于 android platform 目录。如替换 framework-res 路径为:platform/framework/base/core/res/res/value/config.xml 中的某一项,则在 overlay 中创建对应的路径:overlay/framework/base/core/res/res/value/config.xml 并添加要修改的一向配置,如:
<?xml
version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<integer name="config_multiuserMaximumUsers">4</integer>
</resources>
2.2. 预装 APK
预装 apk 安装有两种方法,可以安装到 system/app 目录下,也可以安装到 system/preinstall 或 system/precopy 目录下。注:apk 名字不能含有中文、空格等特殊字符。
2.2.1. 默认预装 APK
ES 文件管理器:文件管理器
VideoPlayer:4K 播放器
DragonAging:工厂测试应用
DragonFire:工厂测试应用
DragonPhone:工厂测试应用
由于涉及版权问题,建议不安装 GAPP 应用,
GMS 认证需安装
Google 提供的正版 GAPP 应用。
2.2.2. 预装到 system/app 目录
1. 在目录 device/softwinner/common/prebuild/apk/中创建一个目录存放对应 APK。
2. 将 apk 放入该目录中。
3. 将 apk 使用 winrar 打开,将 lib/
armeabi 下的 so 库解压到 lib/arm/目录中。
4. 在同目录的 Android.mk 文件中加入:
# Example LOCAL_PATH := $(
call my-dir)
include $(CLEAR_VARS) LOCAL_MODULE := APK_MODULE_NAME(
模块的唯一名字) LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_TAGS :=
optional LOCAL_BUILT_MODULE_STEM := package.apk LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) #LOCAL_PRIVILEGED_MODULE := LOCAL_CERTIFICATE := PRESIGNED
......
更多详细内容请下载附件查看