croot 如何在 android 中工作?此外,如何在 python 脚本中复制此功能?
how does croot work in android? Additionally, how do I replicate this functionality inside a python script?
我想在 Android 构建环境中找到给定名称的存储库路径。
目前我是这样做的:
- croot(也许 croot 源代码可以帮助我获得在 python 中实现此功能的线索?)
- 六.repo/manifest.xml
- grep for repository name 并找到其对应的路径
- cd 存储库路径
我想用 python 脚本实现这些步骤。
要求是能够在给定项目名称的 android 构建系统内的任何地方执行此操作(我从 Gerrit 获得我想挑选或拉取)。
此命令会将我带到项目目录。
./test.py project_name
实现此目的的任何想法或替代方法也会有所帮助。
提前致谢!
好吧,这成功了!
import sys
import os
import xml.etree.ElementTree as ET
def main():
project_name=str(sys.argv[1])
top_dir=os.environ['ANDROID_BUILD_TOP'] # There is a global variable that is set
# that will help you do croot while
# running in python shell.
manifest_file='.repo/manifests.xml'
os.chdir(top_dir)
tree = ET.parse(manifest_file)
root = tree.getroot()
for project in root.findall('project'):
if (project_name == project.get('name')):
print project.get('path')
exit()
if __name__ == "__main__":
main()
唯一的问题是我无法直接 cd 到项目路径,因为您无法在退出时更改父目录。我想我可以接受。
我想在 Android 构建环境中找到给定名称的存储库路径。
目前我是这样做的:
- croot(也许 croot 源代码可以帮助我获得在 python 中实现此功能的线索?)
- 六.repo/manifest.xml
- grep for repository name 并找到其对应的路径
- cd 存储库路径
我想用 python 脚本实现这些步骤。 要求是能够在给定项目名称的 android 构建系统内的任何地方执行此操作(我从 Gerrit 获得我想挑选或拉取)。
此命令会将我带到项目目录。
./test.py project_name
实现此目的的任何想法或替代方法也会有所帮助。 提前致谢!
好吧,这成功了!
import sys
import os
import xml.etree.ElementTree as ET
def main():
project_name=str(sys.argv[1])
top_dir=os.environ['ANDROID_BUILD_TOP'] # There is a global variable that is set
# that will help you do croot while
# running in python shell.
manifest_file='.repo/manifests.xml'
os.chdir(top_dir)
tree = ET.parse(manifest_file)
root = tree.getroot()
for project in root.findall('project'):
if (project_name == project.get('name')):
print project.get('path')
exit()
if __name__ == "__main__":
main()
唯一的问题是我无法直接 cd 到项目路径,因为您无法在退出时更改父目录。我想我可以接受。