echo "Wang812330500" | sudo -S apt install -y bc bison build-essential \
ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick \
lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 \
libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush \
rsync schedtool squashfs-tools xsltproc zip zlib1g-dev libwxgtk3.0-gtk3-dev
echo "Wang812330500" | sudo -S update-alternatives --install /usr/bin/python python /usr/bin/python3 150
git config --global user.name "wangjiasheng"
git config --global user.email "[email protected]"
if mountpoint -q /mnt/NVME
then
echo "------mounted--------"
else
echo "812330500" | sudo -S mount /dev/nvme0n2p1 /mnt/NVME/
fi
wget https://dl.google.com/android/repository/platform-tools_r34.0.4-linux.zip
export ANDROID_TOOLS=/usr/platform-tools
export PATH=$PATH:$ANDROID_TOOLS
export IP=10.10.108.225
export http_proxy=socks5://${IP}:7890
export https_proxy=socks5://${IP}:7890
export FTP_PROXY=socks5://${IP}:7890
export ALL_PROXY=socks5://$IP:7890
git config --global http.proxy socks5://${IP}:7890
git config --global https.proxy socks5://${IP}:7890
git config --global http.postBuffer 524288000
unset http_proxy
unset https_proxy
unset FTP_PROXY
unset ALL_PROXY
git config --global --unset http.proxy
git config --global --unset https.proxy
git lfs install
export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache
ccache -M 50G
ccache -o compression=true
编译过程中报错 ninja failed with: exit status 137需要添加虚拟内存
sudo dd if=/dev/zero of=/swap bs=1M count=16384
#设置权限
sudo chmod 666 /swap
#设置swap文件系统
sudo mkswap /swap
#激活swap
sudo swapon /swap
#添加开机启动
sudo vi /etc/fstab
/swap swap swap defaults 0 0
sudo mkswap /dev/sda1
sudo swapon /dev/sda1
free -h
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-20.0 --git-lfs --depth=1
repo sync --no-clone-bundle --current-branch
repo start master --all
cd /mnt/NVME/
source build/envsetup.sh
breakfast polaris
croot
brunch polaris
mka framework-minus-apex
adb root
adb remount
adb push /mnt/NVME/out/target/product/polaris/system/framework/framework.jar /system/framework/
adb push /mnt/NVME/out/target/product/polaris/system/framework/arm/* /system/framework/arm/
adb push /mnt/NVME/out/target/product/polaris/system/framework/arm64/* /system/framework/arm64/
subject='/C=CN/ST=HuBei/L=Wuhan/O=Meizu/OU=Meizu/CN=314232332/[email protected]'
mkdir ~/.android-certs
for cert in bluetooth cyngn-app media networkstack platform releasekey sdk_sandbox shared testcert testkey verity; do \
./development/tools/make_key ~/.android-certs/$cert "$subject"; \
done
cp ./development/tools/make_key ~/.android-certs/
sed -i 's|2048|4096|g' ~/.android-certs/make_key
for apex in com.android.adbd com.android.adservices com.android.adservices.api com.android.appsearch com.android.art com.android.bluetooth com.android.btservices com.android.cellbroadcast com.android.compos com.android.connectivity.resources com.android.conscrypt com.android.extservices com.android.hotspot2.osulogin com.android.i18n com.android.ipsec com.android.media com.android.media.swcodec com.android.mediaprovider com.android.nearby.halfsheet com.android.networkstack.tethering com.android.neuralnetworks com.android.ondevicepersonalization com.android.os.statsd com.android.permission com.android.resolv com.android.runtime com.android.safetycenter.resources com.android.scheduling com.android.sdkext com.android.support.apexer com.android.telephony com.android.tethering com.android.tzdata com.android.uwb com.android.uwb.resources com.android.virt com.android.vndk.current com.android.wifi com.android.wifi.dialog com.android.wifi.resources com.qorvo.uwb; do \
subject='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN='$apex'/[email protected]'; \
~/.android-certs/make_key ~/.android-certs/$apex "$subject"; \
openssl pkcs8 -in ~/.android-certs/$apex.pk8 -inform DER -out ~/.android-certs/$apex.pem; \
done
touch ~/.android-certs/ANDROID_PW_FILE
[[[ 812330500 ]]] ~/.android-certs/bluetooth
[[[ 812330500 ]]] ~/.android-certs/com.android.adbd
[[[ 812330500 ]]] ~/.android-certs/com.android.adservices
[[[ 812330500 ]]] ~/.android-certs/com.android.adservices.api
[[[ 812330500 ]]] ~/.android-certs/com.android.appsearch
[[[ 812330500 ]]] ~/.android-certs/com.android.art
[[[ 812330500 ]]] ~/.android-certs/com.android.bluetooth
[[[ 812330500 ]]] ~/.android-certs/com.android.btservices
[[[ 812330500 ]]] ~/.android-certs/com.android.cellbroadcast
[[[ 812330500 ]]] ~/.android-certs/com.android.compos
[[[ 812330500 ]]] ~/.android-certs/com.android.connectivity.resources
[[[ 812330500 ]]] ~/.android-certs/com.android.conscrypt
[[[ 812330500 ]]] ~/.android-certs/com.android.extservices
[[[ 812330500 ]]] ~/.android-certs/com.android.hotspot2.osulogin
[[[ 812330500 ]]] ~/.android-certs/com.android.i18n
[[[ 812330500 ]]] ~/.android-certs/com.android.ipsec
[[[ 812330500 ]]] ~/.android-certs/com.android.media
[[[ 812330500 ]]] ~/.android-certs/com.android.media.swcodec
[[[ 812330500 ]]] ~/.android-certs/com.android.mediaprovider
[[[ 812330500 ]]] ~/.android-certs/com.android.nearby.halfsheet
[[[ 812330500 ]]] ~/.android-certs/com.android.networkstack.tethering
[[[ 812330500 ]]] ~/.android-certs/com.android.neuralnetworks
[[[ 812330500 ]]] ~/.android-certs/com.android.ondevicepersonalization
[[[ 812330500 ]]] ~/.android-certs/com.android.os.statsd
[[[ 812330500 ]]] ~/.android-certs/com.android.permission
[[[ 812330500 ]]] ~/.android-certs/com.android.resolv
[[[ 812330500 ]]] ~/.android-certs/com.android.runtime
[[[ 812330500 ]]] ~/.android-certs/com.android.safetycenter.resources
[[[ 812330500 ]]] ~/.android-certs/com.android.scheduling
[[[ 812330500 ]]] ~/.android-certs/com.android.sdkext
[[[ 812330500 ]]] ~/.android-certs/com.android.support.apexer
[[[ 812330500 ]]] ~/.android-certs/com.android.telephony
[[[ 812330500 ]]] ~/.android-certs/com.android.tethering
[[[ 812330500 ]]] ~/.android-certs/com.android.tzdata
[[[ 812330500 ]]] ~/.android-certs/com.android.uwb
[[[ 812330500 ]]] ~/.android-certs/com.android.uwb.resources
[[[ 812330500 ]]] ~/.android-certs/com.android.virt
[[[ 812330500 ]]] ~/.android-certs/com.android.vndk.current
[[[ 812330500 ]]] ~/.android-certs/com.android.wifi
[[[ 812330500 ]]] ~/.android-certs/com.android.wifi.dialog
[[[ 812330500 ]]] ~/.android-certs/com.android.wifi.resources
[[[ 812330500 ]]] ~/.android-certs/com.qorvo.uwb
[[[ 812330500 ]]] ~/.android-certs/media
[[[ 812330500 ]]] ~/.android-certs/networkstack
[[[ 812330500 ]]] ~/.android-certs/platform
[[[ 812330500 ]]] ~/.android-certs/releasekey
[[[ 812330500 ]]] ~/.android-certs/sdk_sandbox
[[[ 812330500 ]]] ~/.android-certs/shared
[[[ 812330500 ]]] ~/.android-certs/cyngn-app
[[[ 812330500 ]]] ~/.android-certs/testcert
[[[ 812330500 ]]] ~/.android-certs/testkey
[[[ 812330500 ]]] ~/.android-certs/verity
export ANDROID_PW_FILE=/home/wjs/.android-certs/ANDROID_PW_FILE
make clean
make mrproper
mka target-files-package otatools
sign_target_files_apks -o -d ~/.android-certs \
--extra_apks com.android.adbd.apex=$HOME/.android-certs/com.android.adbd \
--extra_apex_payload_key com.android.adbd.apex=$HOME/.android-certs/com.android.adbd.pem \
--extra_apks com.android.adservices.apex=$HOME/.android-certs/com.android.adservices \
--extra_apex_payload_key com.android.adservices.apex=$HOME/.android-certs/com.android.adservices.pem \
--extra_apks com.android.adservices.api.apex=$HOME/.android-certs/com.android.adservices.api \
--extra_apex_payload_key com.android.adservices.api.apex=$HOME/.android-certs/com.android.adservices.api.pem \
--extra_apks com.android.appsearch.apex=$HOME/.android-certs/com.android.appsearch \
--extra_apex_payload_key com.android.appsearch.apex=$HOME/.android-certs/com.android.appsearch.pem \
--extra_apks com.android.art.apex=$HOME/.android-certs/com.android.art \
--extra_apex_payload_key com.android.art.apex=$HOME/.android-certs/com.android.art.pem \
--extra_apks com.android.bluetooth.apex=$HOME/.android-certs/com.android.bluetooth \
--extra_apex_payload_key com.android.bluetooth.apex=$HOME/.android-certs/com.android.bluetooth.pem \
--extra_apks com.android.btservices.apex=$HOME/.android-certs/com.android.btservices \
--extra_apex_payload_key com.android.btservices.apex=$HOME/.android-certs/com.android.btservices.pem \
--extra_apks com.android.cellbroadcast.apex=$HOME/.android-certs/com.android.cellbroadcast \
--extra_apex_payload_key com.android.cellbroadcast.apex=$HOME/.android-certs/com.android.cellbroadcast.pem \
--extra_apks com.android.compos.apex=$HOME/.android-certs/com.android.compos \
--extra_apex_payload_key com.android.compos.apex=$HOME/.android-certs/com.android.compos.pem \
--extra_apks com.android.connectivity.resources.apex=$HOME/.android-certs/com.android.connectivity.resources \
--extra_apex_payload_key com.android.connectivity.resources.apex=$HOME/.android-certs/com.android.connectivity.resources.pem \
--extra_apks com.android.conscrypt.apex=$HOME/.android-certs/com.android.conscrypt \
--extra_apex_payload_key com.android.conscrypt.apex=$HOME/.android-certs/com.android.conscrypt.pem \
--extra_apks com.android.extservices.apex=$HOME/.android-certs/com.android.extservices \
--extra_apex_payload_key com.android.extservices.apex=$HOME/.android-certs/com.android.extservices.pem \
--extra_apks com.android.hotspot2.osulogin.apex=$HOME/.android-certs/com.android.hotspot2.osulogin \
--extra_apex_payload_key com.android.hotspot2.osulogin.apex=$HOME/.android-certs/com.android.hotspot2.osulogin.pem \
--extra_apks com.android.i18n.apex=$HOME/.android-certs/com.android.i18n \
--extra_apex_payload_key com.android.i18n.apex=$HOME/.android-certs/com.android.i18n.pem \
--extra_apks com.android.ipsec.apex=$HOME/.android-certs/com.android.ipsec \
--extra_apex_payload_key com.android.ipsec.apex=$HOME/.android-certs/com.android.ipsec.pem \
--extra_apks com.android.media.apex=$HOME/.android-certs/com.android.media \
--extra_apex_payload_key com.android.media.apex=$HOME/.android-certs/com.android.media.pem \
--extra_apks com.android.media.swcodec.apex=$HOME/.android-certs/com.android.media.swcodec \
--extra_apex_payload_key com.android.media.swcodec.apex=$HOME/.android-certs/com.android.media.swcodec.pem \
--extra_apks com.android.mediaprovider.apex=$HOME/.android-certs/com.android.mediaprovider \
--extra_apex_payload_key com.android.mediaprovider.apex=$HOME/.android-certs/com.android.mediaprovider.pem \
--extra_apks com.android.nearby.halfsheet.apex=$HOME/.android-certs/com.android.nearby.halfsheet \
--extra_apex_payload_key com.android.nearby.halfsheet.apex=$HOME/.android-certs/com.android.nearby.halfsheet.pem \
--extra_apks com.android.networkstack.tethering.apex=$HOME/.android-certs/com.android.networkstack.tethering \
--extra_apex_payload_key com.android.networkstack.tethering.apex=$HOME/.android-certs/com.android.networkstack.tethering.pem \
--extra_apks com.android.neuralnetworks.apex=$HOME/.android-certs/com.android.neuralnetworks \
--extra_apex_payload_key com.android.neuralnetworks.apex=$HOME/.android-certs/com.android.neuralnetworks.pem \
--extra_apks com.android.ondevicepersonalization.apex=$HOME/.android-certs/com.android.ondevicepersonalization \
--extra_apex_payload_key com.android.ondevicepersonalization.apex=$HOME/.android-certs/com.android.ondevicepersonalization.pem \
--extra_apks com.android.os.statsd.apex=$HOME/.android-certs/com.android.os.statsd \
--extra_apex_payload_key com.android.os.statsd.apex=$HOME/.android-certs/com.android.os.statsd.pem \
--extra_apks com.android.permission.apex=$HOME/.android-certs/com.android.permission \
--extra_apex_payload_key com.android.permission.apex=$HOME/.android-certs/com.android.permission.pem \
--extra_apks com.android.resolv.apex=$HOME/.android-certs/com.android.resolv \
--extra_apex_payload_key com.android.resolv.apex=$HOME/.android-certs/com.android.resolv.pem \
--extra_apks com.android.runtime.apex=$HOME/.android-certs/com.android.runtime \
--extra_apex_payload_key com.android.runtime.apex=$HOME/.android-certs/com.android.runtime.pem \
--extra_apks com.android.safetycenter.resources.apex=$HOME/.android-certs/com.android.safetycenter.resources \
--extra_apex_payload_key com.android.safetycenter.resources.apex=$HOME/.android-certs/com.android.safetycenter.resources.pem \
--extra_apks com.android.scheduling.apex=$HOME/.android-certs/com.android.scheduling \
--extra_apex_payload_key com.android.scheduling.apex=$HOME/.android-certs/com.android.scheduling.pem \
--extra_apks com.android.sdkext.apex=$HOME/.android-certs/com.android.sdkext \
--extra_apex_payload_key com.android.sdkext.apex=$HOME/.android-certs/com.android.sdkext.pem \
--extra_apks com.android.support.apexer.apex=$HOME/.android-certs/com.android.support.apexer \
--extra_apex_payload_key com.android.support.apexer.apex=$HOME/.android-certs/com.android.support.apexer.pem \
--extra_apks com.android.telephony.apex=$HOME/.android-certs/com.android.telephony \
--extra_apex_payload_key com.android.telephony.apex=$HOME/.android-certs/com.android.telephony.pem \
--extra_apks com.android.tethering.apex=$HOME/.android-certs/com.android.tethering \
--extra_apex_payload_key com.android.tethering.apex=$HOME/.android-certs/com.android.tethering.pem \
--extra_apks com.android.tzdata.apex=$HOME/.android-certs/com.android.tzdata \
--extra_apex_payload_key com.android.tzdata.apex=$HOME/.android-certs/com.android.tzdata.pem \
--extra_apks com.android.uwb.apex=$HOME/.android-certs/com.android.uwb \
--extra_apex_payload_key com.android.uwb.apex=$HOME/.android-certs/com.android.uwb.pem \
--extra_apks com.android.uwb.resources.apex=$HOME/.android-certs/com.android.uwb.resources \
--extra_apex_payload_key com.android.uwb.resources.apex=$HOME/.android-certs/com.android.uwb.resources.pem \
--extra_apks com.android.virt.apex=$HOME/.android-certs/com.android.virt \
--extra_apex_payload_key com.android.virt.apex=$HOME/.android-certs/com.android.virt.pem \
--extra_apks com.android.vndk.current.apex=$HOME/.android-certs/com.android.vndk.current \
--extra_apex_payload_key com.android.vndk.current.apex=$HOME/.android-certs/com.android.vndk.current.pem \
--extra_apks com.android.wifi.apex=$HOME/.android-certs/com.android.wifi \
--extra_apex_payload_key com.android.wifi.apex=$HOME/.android-certs/com.android.wifi.pem \
--extra_apks com.android.wifi.dialog.apex=$HOME/.android-certs/com.android.wifi.dialog \
--extra_apex_payload_key com.android.wifi.dialog.apex=$HOME/.android-certs/com.android.wifi.dialog.pem \
--extra_apks com.android.wifi.resources.apex=$HOME/.android-certs/com.android.wifi.resources \
--extra_apex_payload_key com.android.wifi.resources.apex=$HOME/.android-certs/com.android.wifi.resources.pem \
--extra_apks com.qorvo.uwb.apex=$HOME/.android-certs/com.qorvo.uwb \
--extra_apex_payload_key com.qorvo.uwb.apex=$HOME/.android-certs/com.qorvo.uwb.pem \
$OUT/obj/PACKAGING/target_files_intermediates/*-target_files-*.zip \
signed-target_files.zip
ota_from_target_files -k ~/.android-certs/releasekey \
--block --backup=true \
signed-target_files.zip \
signed-ota_update.zip
注:OTA包既可以用代码RecoverySystem.installPackage模式、AB模式。也可以用adb命令模式
sudo gedit /etc/udev/rules.d/51-android.rules
#android
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1",ATTRS{idProduct}=="4ee7",MODE="0666"
#fastboot
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1",ATTRS{idProduct}=="d00d",MODE="0666"
#recovery
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1",ATTRS{idProduct}=="d001",MODE="0666"
#充电模式
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6",ATTRS{idProduct}=="f000",MODE="0666"
attr和attrs可以用lsusb命令查看
sudo chmod a+rx /etc/udev/rules.d/51-android.rules
echo "0x2717" > ~/.android/adb_usb.ini
sudo service udev restart
#重启adb
adb kill-server
adb start-server
adb devices
adb sideload signed-ota_update.zip
注:系统签名过的所以需要刷recovery,这样ota不会提示签名错误
fastboot flash boot boot.img
fastboot flash recovery recovery.img
#github hosts
140.82.112.3 github.com
199.232.5.194 github.global.ssl.fastly.net
54.231.114.219 github-cloud.s3.amazonaws.com
#查看OTA是否是AB分区
adb shell getprop ro.build.ab_update
#查看APK签名
keytool -printcert -file COM_TENC.RSA
#查看pem签名
keytool -printcert -file platform.x509.pem
#查看keystore签名
keytool -list -v -keystore system_signature.keystore
cp /mnt/NVME/out/host/linux-x86/framework/signapk.jar /mnt/Mix2s/sign/signapk.jar
cp /mnt/NVME/out/host/linux-x86/lib64/libconscrypt_openjdk_jni.so /mnt/Mix2s/sign/libconscrypt_openjdk_jni.so
export LD_LIBRARY_PATH=/mnt/Mix2s/sign/
java -jar signapk.jar platform.x509.pem platform.pk8 app-release-unsigned.apk app-release.apk
jarsigner -verbose -keystore game.jks -storepass 812330500 -signedjar modify_signed.apk modify.apk 314232332
java -jar .\apktool_2.9.0.jar d -f .\tanke.apk -o out
java -jar .\apktool_2.9.0.jar b -o modify.apk out
aidegen framework -i s -s -a
aidegen Settings -i s -s
source build/envsetup.sh
lunch lineage_sdk_phone_x86_64-eng
mka sdk
emulator