2017-07-13 2 views
0

J'ai pu créer une image Android pour mon Development Board en appliquant mon patch personnalisé au code AOSP. Les fichiers binaires générés (Say Version 1) fonctionnaient correctement. J'ai fait quelques changements à mon patch, construit la dernière image (Say Version 2). Cela fonctionne aussi bien.Erreur lors de la génération du package OTA incrémentiel Android

J'ai target_files respectifs pour ces versions en exécutant la commande dist

make dist 

Ce qui a fonctionné

Lorsque je tente de générer package ota supplémentaire sur ma machine Linux (disons PC-1), le fichier ota.zip a été généré et fonctionne correctement.

./build/tools/releasetools/ota_from_target_files -i ./version1_target_file.zip ./version2_target_file.zip oat_file_version_1_to_2.zip 
unzipping target target-files... 
unzipping source target-files... 
unable to load device-specific module; assuming none 
Loading target... 
Loading source... 
2 diffs to compute 
    0.41 sec  316/ 307886 bytes ( 0.10%) system/etc/recovery-resource.dat 
    1.43 sec  1799/2521277 bytes ( 0.07%) system/priv-app/Calander.apk 
building image from target_files BOOT... 
building image from target_files BOOT... 
building image from target_files RECOVERY... 
building image from target_files RECOVERY... 
boot  target: 5414912 source: 5414912 diff: 1086759 
boot image changed; including. 
recovery image changed; including as patch from boot. 
done. 

Ce qui ne fonctionnait:

La même chose quand essayé dans un autre PC Linux (autre que PC-1), il y a une dépendance erreur faisant échouer mon script.

./build/tools/releasetools/ota_from_target_files -i ./version1_target_file.zip ./version2_target_file.zip oat_file_version_1_to_2.zip 
unzipping target target-files... 
unzipping source target-files... 
unable to load device-specific module; assuming none 
Loading target... 
Loading source... 
2 diffs to compute 
[Errno 2] No such file or directory 
Exception in thread Thread-2: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner 
    self.run() 
    File "/usr/lib/python2.7/threading.py", line 754, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/home/ubuntu/otaPackageBuildTest/test/build/tools/releasetools/common.py", line 919, in worker 
    d.ComputePatch() 
    File "/home/ubuntu/otaPackageBuildTest/test/build/tools/releasetools/common.py", line 879, in ComputePatch 
    p = Run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
    File "/home/ubuntu/otaPackageBuildTest/test/build/tools/releasetools/common.py", line 68, in Run 
    return subprocess.Popen(args, **kwargs) 
    File "/usr/lib/python2.7/subprocess.py", line 711, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 
[Errno 2] No such file or directory 
Exception in thread Thread-1: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner 
    self.run() 
    File "/usr/lib/python2.7/threading.py", line 754, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/home/ubuntu/otaPackageBuildTest/test/build/tools/releasetools/common.py", line 919, in worker 
    d.ComputePatch() 
    File "/home/ubuntu/otaPackageBuildTest/test/build/tools/releasetools/common.py", line 879, in ComputePatch 
    p = Run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
    File "/home/ubuntu/otaPackageBuildTest/test/build/tools/releasetools/common.py", line 68, in Run 
    return subprocess.Popen(args, **kwargs) 
    File "/usr/lib/python2.7/subprocess.py", line 711, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 


building image from target_files BOOT... 
Traceback (most recent call last): 
    File "./build/tools/releasetools/ota_from_target_files", line 914, in <module> 
    main(sys.argv[1:]) 
    File "./build/tools/releasetools/ota_from_target_files", line 899, in main 
    WriteIncrementalOTAPackage(input_zip, source_zip, output_zip) 
    File "./build/tools/releasetools/ota_from_target_files", line 605, in WriteIncrementalOTAPackage 
    OPTIONS.source_info_dict) 
    File "/home/ubuntu/otaPackageBuildTest/test/build/tools/releasetools/common.py", line 344, in GetBootableImage 
    info_dict)) 
    File "/home/ubuntu/otaPackageBuildTest/test/build/tools/releasetools/common.py", line 281, in BuildBootableImage 
    p1 = Run(cmd, stdout=subprocess.PIPE) 
    File "/home/ubuntu/otaPackageBuildTest/test/build/tools/releasetools/common.py", line 68, in Run 
    return subprocess.Popen(args, **kwargs) 
    File "/usr/lib/python2.7/subprocess.py", line 711, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 

Question: Quels sont les paquets minimum requis pour générer un fichier ota supplémentaire sur un nouveau PC Linux?

Répondre

0

J'installer tous les libs PSBA nécessaires comme indiqué à partir de: https://source.android.com/source/initializing

Pour Ubuntu 14.04/16.04:

sudo apt-get install git-core build-essential GnuPG flex bison gperf curl zip zlib1g-dev gcc-multilib g ++ - multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

En outre, il est parfois utile de transmettre l'archi hôte (-p arg) et l'option verbeuse (-v) pour obtenir plus d'informations de débogage à partir de la commande elle-même:

I.E.

./build/tools/releasetools/ota_from_target_files -v --block -p out/host/linux-x86 -k build/target/product/security/releasekey -i previous_signed_target_files.zip signed_target_files.zip incremental.zip