同步操作将从 HuaweiCloudDeveloper/huaweicloud-cloudPhone-aosp9 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
云手机AOSP9开源代码,用于构建运行在华为云手机服务器的Android9镜像
本软件基于AOSP 9.0.0_r76开发,支持修改以下路径中的源码
aosp/frameworks
aosp/packages
aosp/vendor
客户对接阶段
使用说明
1 申请权限
2 准备开发环境
客户日常修改代码编译构建阶段
使用说明
3. 修改代码
4. 配置脚本
5. 构建镜像
7. 版本管理
8. 与原仓库保持同步更新
客户定制化需求:
使用说明
6. 自定义系统签名
9. 定制webview
定制GMS:https://gitee.com/HuaweiCloudDeveloper/huaweicloud-cloudPhone-aosp11/wikis/%E5%AE%9A%E5%88%B6GMS%E9%95%9C%E5%83%8F
客户镜像管理:
支持镜像查询以及同region不同账号镜像共享
https://support.huaweicloud.com/api-cph/cph_api_0559.html
请按照以下格式发送邮件,成功后可通过客户经理获取专属构建服务器地址和密钥
收件人:
cphdeveloper@huawei.com
邮件标题:
申请AOSP9自定义镜像构建权限
邮件内容:
公司名称:
联系人:
联系电话:
客户经理:
建议使用Ubuntu 18.04,并安装curl,git,gpg等常用软件,确保开发环境可以联网
建议:
1. 在aosp/vendor/common/android 目录下放置新增的代码文件或者预编译产物
2. 在aosp/vendor/common/products/product_extra.mk 中声明构建规则
3. 如无特殊需求,不要修改aosp/vendor目录下的其他文件,否则可能会对镜像的基本功能造成影响
7.版本管理
如果将代码仓设为私有,请将以下账户添加为只读成员,用于拉取代码和构建镜像
cphdeveloper@huawei.com
如需本地验证是否存在编译错误,可拉取原生AOSP代码后,复制本地代码到原生目录,执行以下命令进行验证
lunch aosp_arm64-eng
make framework -j
修改build.sh,其中SERVER_ADDR和KEY为在1.申请权限
步骤中获取的专属构建服务器地址和密钥
BRANCH_TAG 代码的版本号,例如v1.2.1
KEY 专属构建密钥
IMG_NAME 自定义的镜像产物别名
SERVER_ADDR 专属构建服务器
执行build.sh,支持以下参数
会清理中间产物,速度较慢,建议生产环境使用。
./build.sh
不清理中间产物,速度较快,建议仅用于调试阶段。
./build.sh -i
如果构建失败,可通过日志找到错误,修正后重新触发构建。
./build.sh -l
构建成功后,返回镜像ID
使用公共的系统签名有安全风险,可通过以下步骤制作私有系统签名,加密后上传,构建系统可保证私有的系统签名不会泄露。
制作环境:
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic
请参考
https://blog.csdn.net/langlitaojin/article/details/108045709
Step 1:生成 releasekey platform shared media testkey
cd /path/to/aosp/rootdir/
subject='/C=CN/ST=Guangdong/L=Shengzhen/O=${company}/OU=Compony/CN=AndroidTeam/emailAddress=mobile@${company}.com'
for x in releasekey platform shared media testkey; do
rm build/target/product/security/${x}*
./development/tools/make_key build/target/product/security/$x "$subject"
done
Step 2:生成verity key
cd /path/to/aosp/rootdir/
make generate_verity_key
development/tools/make_key veritykey '/C=CN/ST=Guangdong/L=Shengzhen/O=Huawei/OU=Compony/CN=AndroidTeam/emailAddress=mobile@huawei.com'
out/host/linux-x86/bin/generate_verity_key -convert veritykey.x509.pem verity_key
mv veritykey.pk8 ./build/target/product/security/veritykey.pk8
mv veritykey.x509.pem ./build/target/product/security/veritykey.x509.pem
mv verity_key.pub ./build/target/product/security/verity_key
生成keystore
cd /path/to/aosp/rootdir/
cd build/target/product/security
# 注意替换客户名
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt
openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name ${customer_name}-system-key
# 此时要求输入密码
keytool -importkeystore -deststorepass "${password}" -destkeypass "${password}" -destkeystore ${customer_name}-AOSP.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass "${password}" -alias ${customer_name}-system-key
tar cf ${customer_name}-keystore.tar shared.pk12 shared.priv.pem ${customer_name}-AOSP.keystore
系统网络定位和地理编码接口通过一个系统App,集成定位SDK开发实现,且和当前系统签名绑定
根据系统签名申请Key,请参考 https://lbs.amap.com/api/android-location-sdk/guide/create-project/get-key/
系统App包名
com.cph.networklocation
获取安全码SHA1
keytool -printcert -file platform.x509.pem
获取到Key后,将其保存至文件amap_key
中构建镜像即可。如果更新了系统签名,更换镜像时需要重置手机才生效。
完成以上步骤后,将生成的所有文件放入security
文件夹,security
文件夹应包含以下文件
.
|-- amap_key
|-- media.pk8
|-- media.x509.pem
|-- platform.pk8
|-- platform.x509.pem
|-- releasekey.pk8
|-- releasekey.x509.pem
|-- shared.pk8
|-- shared.x509.pem
|-- testkey.pk8
|-- testkey.x509.pem
|-- verity_key
|-- veritykey.pk8
`-- veritykey.x509.pem
依次执行以下命令完成打包:
cd security
tar czvf security.tar.gz ./*
下载并导入gpg公钥
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys c5c7a35662a6f8080e27ab464a8e757d9b31879e
并设置公钥信任等级为5 = I trust ultimate
gpg --edit-key C5C7A35662A6F8080E27AB464A8E757D9B31879E
5
ctrl+D 退出gpg设置界面后执行
gpg --recipient C5C7A35662A6F8080E27AB464A8E757D9B31879E --output security.tar.gz.gpg --encrypt security.tar.gz
将加密后的私有系统签名文件包提交到代码仓的以下路径:
/aosp/vendor/common/android/security/security.tar.gz.gpg
本仓库使用tag进行版本管理。命名规则如下,可在本仓库的标签页查看所有tag,例如
v1.0.0
v1.1.0
v1.2.0
fork自本仓库的代码也必须创建tag,前两位必须与本仓库的tag保持一致,用来表示其对应关系,第三位可以设置为任意数字,例如
v1.2.1
也支持使用branch方式替换tag
如果在fork代码后,本仓库的代码又发生了更新,可以使用以下方法同步原仓库的更新。
git remote add upstream git@gitee.com:HuaweiCloudDeveloper/huaweicloud-cloud-phone-aosp9.git
设置后通过以下命令进行查看
git remote -v
显示以下两行表示设置成功
upstream git@gitee.com:HuaweiCloudDeveloper/huaweicloud-cloud-phone-aosp9.git (fetch)
upstream git@gitee.com:HuaweiCloudDeveloper/huaweicloud-cloud-phone-aosp9.git (push)
git status
检查本地是否有未提交的修改。如果有,则把你本地的有效修改,先从本地仓库推送到你gitee的仓库。最后再执行一次git status
检查本地已无未提交的修改。git add -A 或者 git add filename
git commit -m "your note"
git push origin master
git status
git pull upstream tag v1.2.0
git checkout master
git merge upstream/master
git tag -a v1.2.1 -m "update tag v1.2.1"
git push --tags
支持线下自定义镜像部署;大致分以下三个步骤:
此处包含代码部署;代码结构主要分四个部分:
一是谷歌开源代码,该代码可以客户自行下载或者通过华为方提供的脚本(脚本下载见tools目录)下载;
二是编译构建执行脚本,该脚本华为方提供;
三是华为方gitee开源代码;
四是预编译包,该包由华为方提供;
代码部署环节可以华为方提供内容,客户自行安装部署,也可以通过obs桶自动安装部署,选择安装方案客户可以根据实际情况选择
镜像管理API,包含支持查询镜像以及同region不同账号镜像共享功能:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。