ninja指令:
./prebuilts/build-tools/linux-x86/bin/ninja -j32 -f out/combined-PROJECT.ninja camera.qcom
bin文件编译:
./prebuilts/python/linux-x86/2.7.5/bin/python ./vendor/qcom/proprietary/chi-cdk/tools/buildbins/buildbins.py --bin-path=../camerabin --target=bin --yaml-file-name=buildbins_PROJECT.yaml
adr2line指令:
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -C -f -e {XXX.so} {address}
编译boot.img指令
/bin/bash -c "(out/host/linux-x86/bin/mkbootimg \
--kernel out/target/product/XXX/kernel \
--ramdisk out/target/product/XXX/ramdisk.img \
--os_version 14 \
--os_patch_level 1970-01-01 \
--kernel_offset 0x0000000 \
--second_offset 0x8800 \
--ramdisk_offset 0x3300000 \
--dtb_offset 0x3000000 \
--header_version 4 \
--dtb device/XXXX/XXX/prebuilt/XXXX.dtb \
--output out/target/product/XXX/boot.img ) \
&& \
(size=\$(for i in out/target/product/XXX/boot.img; \
do stat -c \"%s\" \"\$i\" | tr -d '\\n'; \
echo +; done; echo 0); \
total=\$(( \$( echo \"\$size\" ) )); \
printname=\$(echo -n \"out/target/product/XXX/boot.img\" | tr \" \" +); \
maxsize=\$(( 0x08000000-69632)); \
if [ \"\$total\" -gt \"\$maxsize\" ]; \
then echo \"error: \$printname too large (\$total > \$maxsize)\"; false; \
elif [ \"\$total\" -gt \$((maxsize - 32768)) ]; \
then echo \"WARNING: \$printname approaching size limit (\$total now; limit \$maxsize)\"; \
fi ) \
&& \
(out/host/linux-x86/bin/avbtool add_hash_footer \
--image out/target/product/XXX/boot.img \
--partition_size 0x08000000 \
--partition_name boot \
--prop com.android.build.boot.os_version:14 \
--prop com.android.build.boot.fingerprint:\$(cat out/target/product/XXX/build_fingerprint.txt) )"
CHI-CDK推库脚本:
__PROJECT_NAME__ = "PROJECT/"
import os
sharedLibraryLocalPaths = []
sharedLibraryPhonePaths = []
sharedLibraryName = []
def read_file(filePath):
fileLogObject = open(filePath, 'r')
fileLogLines = fileLogObject.readlines()
for fileLine in fileLogLines:
if "Install: " in fileLine:
# [ 52% 2302/4345] Install: out/target/product/Pong/vendor/lib/camera/com.qti.eeprom.XXX.so
temp = fileLine.split("Install: ") # ['[ 52% 2302/4345]' , 'out/target/product/Pong/vendor/lib/camera/com.qti.eeprom.XXX
sharedLibraryLocalPaths.append(temp[1].split()) # 'out/target/product/Pong/vendor/lib/camera/com.qti.eeprom.XXX.so
sharedLibraryPhonePaths.append(temp[1].split(__PROJECT_NAME__)[1].split()) # 'vendor/lib/camera/com.qti.eeprom.XXX.so\n'
#sharedLibraryName.append(temp[1].split(__PROJECT_NAME__)[1].split('/')[-1].split()) # 'com.qti.eeprom.XXX.so'
fileLogObject.close()
def push_so():
if (len(sharedLibraryLocalPaths) == len(sharedLibraryPhonePaths)):
for i in range(len(sharedLibraryLocalPaths)):
cmd = "adb push " + str(" ".join(sharedLibraryLocalPaths[i])) + " " + str(" ".join(sharedLibraryPhonePaths[i]))
os.system(cmd)
print(str(len(sharedLibraryLocalPaths)) + " file pushed!")
else:
print("error: len(sharedLibraryLocalPaths) != len(sharedLibraryPhonePaths)")
if __name__ == '__main__':
read_file('./1.log')
push_so()