编译服务器配置和代码同步

SSH服务器:\10.162.80.154 账号密码liuyinchang(出现状况:xshell可以连接到服务器,而xftp不能连接到升级xftp,因为验证匹配不行)
repo安装:
安装步骤:
1、根目录下创建.bin文件夹
mkdir ~/.bin
2、配置为临时环境变量(也可配置为永久的)
PATH=~/.bin:$PATH
3、下载repo,公司可能有自己的repo
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo //配置git参数先

git clone git://10.15.208.10/repo.git -b default

4、将git-repo中的repo文件复制到 1 创建的.bin目录中
cd git-repo
cp repo ~/.bin/
5、修改权限
chmod a+x ~/.bin/repo
6、创建同步源码的工作目录 /home/bo.xu/xubo/dev2_1209/.repo/repo
mkdir android_source
7、在工作目录中创建.repo目录
cd android_source
mkdir .repo
8、将下载的git-repo拷贝到.repo下,并改名为 repo(xftp上复制并改名,命令复制cp -r repo 路径)
9、可以重新初始化了
repo init -u xxxxxxxxx -b xxxx
10、开始同步
repo sync

git 相关的设置:
生成新的ssh密钥:ssh-keygen
cd .ssh
cat id_rsa.pub 打开查看
git config --global user.email “yinchang.liu@fih-foxconn.com”
git config --global user.name “yinchang.liu”

xshell ssh账号(10.162.80.154,账号密码liuyinchang,都是姓名小写拼音),下下载代码:
repo init -u ssh://yinchang.liu@10.57.52.136:29418/QC/manifest -b dev/GSI -m 3000018_SYSTEM_BUILD.xml 初始化Manifest(其实,就是包含项目中所有仓库git地址的配置文件)
(3000018对应的是当前的分支号,ID对应的是自己的ID)
repo sync -cj8 platform/vendor/partner_gms (单独下载某个文件,防止报错)
repo sync -cj8 device/gsi_qcom/common
repo sync -cj8 platform/packages/services/SpamDetector
repo sync -cj8 platform/packages/apps/NokiaDialer
repo sync -cj8 --no-tags (下载全部文件,但是可能还是会报错)

1代代码
repo init -u ssh://yinchang.liu@10.15.208.10:29418/manifest -b wingtech -m ap_SDM855_SM8150.LA.1.0_royole_k80129ba1_Dev_CS1_new.xml --reference=/home/jenkins/repo-mirror
repo init -u ssh://yinchang.liu@gerrit.mdbg.royole.com:29418/manifest -b wingtech -m ap_SDM855_SM8150.LA.1.0_royole_k80129ba1_Dev_CS1_new.xml --reference=/home/jenkins/repo-mirror

android_11代码
repo init -u ssh://yinchang.liu@10.15.208.10:29418/manifest -b wingtech -m ap_master_SM8250.LA.2.0_P85802AA1_TBranch.xml --reference=/home/jenkins/repo-mirror
repo init -u ssh://yinchang.liu@gerrit.mdbg.royole.com:29418/manifest -b wingtech -m ap_master_SM8250.LA.2.0_P85802AA1_TBranch.xml --reference=/home/jenkins/repo-mirror

android_12代码
repo init -u ssh://yinchang.liu@10.15.208.10:29418/manifest -b test -m android12_study_r2.xml --reference=/home/jenkins/repo-mirror
repo init -u ssh://yinchang.liu@10.15.208.10:29418/manifest -b test -m royole_android12_wateros_5.0_aosp.xml --reference=/home/jenkins/repo-mirror
repo init -u ssh://yinchang.liu@gerrit.mdbg.royole.com:29418/manifest -b test -m royole_android12_wateros_5.0_aosp.xml --reference=/home/jenkins/repo-mirror
$ repo sync -c -d --no-tags

全部切换到对应的分支
repo forall -c “git checkout royole_p1f2_wateros_3.0”

编译代码:
$ source build/envsetup.sh
$ lunch aosp_arm64-userdebug
$ make -j8
编译出的镜像位于out/target/product/generic_arm64/

repo forall -c git reset --hard
同步到最新的代码:
LINUX/android/frameworks/base$ git reset --hard QC/B2N/dev/SDM660/3000018/GSIP
LINUX/android/frameworks/base$ git remote update
https://www.cnblogs.com/hdk1993/p/8648030.html repo命令

systemui所在位置:/LINUX/android/frameworks/base/packages/SystemUI
单独编译systemui的路径:/LINUX/scripts/
单编的命令:./bld -p gsi --model-code=00CN and make SystemUI
./bld -p pnx --model-code=00CN and make SystemUI(00CN和00WW,SystemUI也可以换成其他的模块)。
这是编出来的apk放置路径:/LINUX/android/out/target/product/gsi_sdm660_64/system/priv-app/SystemUI/SystemUI.apk
编译launcher需要的jar包命令:./bld -p gsi --model-code=00CN SystemUISharedLib 位于frameworks/base/packages/SystemUI/shared
chmod 777 bld(赋予权限)

现有代码模块的分布:
http://gerrit.fihtdc.com/#/q/project:QC/platform/frameworks/base
http://gerrit.fihtdc.com/#/q/project:QC_preO/platform/frameworks/base
http://gerrit.fihtdc.com/#/q/project:QC_preO/device/sirin/SR00300-W
http://gerrit.fihtdc.com/#/q/project:QC/device/customer
http://gerrit.fihtdc.com/#/q/project:QC_preO/device/fih/PNX
http://10.57.52.136/#/q/project:QC_preP/platform/frameworks/base (P项目高通平台)
http://10.57.52.136/#/q/project:MTK_NJ/alps/vendor/mediatek/proprietary/packages/apps/SystemUI

PNXP编译的GSI-Branch:
repo init -u ssh://ID@10.57.52.136:29418/QC/manifest -b dev/GSI -m V0.2SA_BUILD.xml
repo sync -cj8 --no-tags

编译Setting:/RCL/LINUX/android目录下
source build/envsetup.sh
lunch
mmm packages/apps/Settings/

同步单个模块的代码:repo sync --force-sync packages/apps/Provision

在使用repo sync同步代码时候出现
error: .repo/manifests/: contains uncommitted changes
出现这个问题的原因是本地代码发生变化,但未commit
试着通过 git reset --hard来恢复所有变化的文件之后,依然存在上述问题,
最后通过cd .repo/manifests 切换到 .repo/manifests目录下执行git stash命令,并
通过git clean -f -d命令删除变化记录目录,然后使用repo sync就可以通过了。

使用签名文件重新签名:java -jar signapk.jar platform.x509.pem platform.pk8 Provision-debug.apk 111.apk
编译后framework jar包路径android/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
android studio里面编译aar,右边Gradle打开进入module下Tasks目录assembleRelease命令执行,即可在out目录下看到aar,
出现无法编入第三方库,将第三方库放到libs下再执行assembleRelease命令即可。

系统资源放置目录android/frameworks/base/core/res/ 如果需要修改或者查看最新的系统资源定义,可以查看这个

编译:make 模块名如Provision(可以通过查看android.mk里的LOCAL_PACKAGE_NAME获取到);然后可以使用 mmm Provision
单编错误解决:make Settings -j8 ENABLE_AB=true BOARD_DYNAMIC_PARTITION_ENABLE=true SHIPPING_API_LEVEL=29
编译jar包:
make SystemUISharedLib -j8 ENABLE_AB=true BOARD_DYNAMIC_PARTITION_ENABLE=true SHIPPING_API_LEVEL=29
make Launcher3QuickStep -j8 ENABLE_AB=true BOARD_DYNAMIC_PARTITION_ENABLE=true SHIPPING_API_LEVEL=29

./wt publish -p K80130AA1 -msv 编译版本

编译不过或者报错的终极解决方法:
repo sync时可能出现问题,对于已有项目已经编译过,会有很多新生成或修改的文件。如果需要清除这些多的文件以及将所有修改
的文件恢复回去,可以运行下述两个命令:

先清除下修改并恢复,然后同步下,再单编launcher试下
repo forall -c “git reset --hard HEAD”
repo forall -c “git clean -df”
repo sync
source build/envsetup.sh
lunch
make Launcher3QuickStep -j8 ENABLE_AB=true BOARD_DYNAMIC_PARTITION_ENABLE=true SHIPPING_API_LEVEL=29

文件快速删除 rm -fr

但是android下面的out目录需要手动清除:rm -rf out
在这个基础上,再repo sync一般就不会有问题了,然后重新lunch、编译即可

刷机报错解决:FireHose Fail:FHLoader fail或者其他process fail:1、查看下刷机的版本是否正确,不要带image的版本;2、进入
刷机模块出现9008端口后快速点download;3、查看设备管理器端口9008是否有感叹号
出现900E端口的处理方法,先刷一个4-9号的版本,起来后再刷一个最新的版本(最新版本可能需要刷两次)
最新解决方法:fastboot flash super D:\Version\RY1202_A01_0027_V2.0.0_20200518_120432_userdebug_sign_images_MP\software\images\super.img

反编译执行命令:cd decompilation/dex2jar-2.0 d2j-dex2jar classes.dex
com.googlecode.d2j.DexException: not support version.的解决方法:讲classes.dex的文件打开修改版本号038到035即可

git commit --amend

签名apk查看 :keytool -printcert -jarfile

命令进入刷机模式:adb reboot ftmmode adb reboot edl

monkey准备工作:rm -r dropbox mkdir dropbox 删除保持的一些dropbox信息
然后连上usb,执行monkey命令

把module下build.gradle文件里相关jar的implementation标签改为api标签即可,因为implementation 修饰的只能在当前module中引用,你在app下是引用不了的

手机进入安全模式的步骤:adb reboot 启动出现logo时长按音量下键即可,再次重启会退出安全模式

// 查看远程仓库地址
git remote -v
// 删除本地远程仓库地址
git remote rm origin
// 添加新的仓库地址
git remote add origin ssh://lianhua.liu@gerrit.mdbg.royole.com:29418/platform/vendor/royole/Weather
// 将本地仓库与远程仓库关联
git branch --set-upstream-to=origin/royole_zijin_dev royole_zijin_dev
// 提交代码
git push origin HEAD:refs/for/royole_zijin_dev

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值