Ответ 1
Вы не можете решить эту проблему, используя repo forall
.
Предположим для уверенности, что ваше текущее дерево Android чистое - никаких локальных изменений или фиксаций, т.е. repo status
ничего не показывает.
Чтобы правильно переключить версию Android, все, что вам нужно изменить, это ветка для вашего хранилища манифестов. Сначала определите доступные ветки с манифестами для разных версий Android:
cd $ANDROID_ROOT
cd .repo/manifests
git branch -av # see all available branches on origin
Выберите версию и
cd $ANDROID_ROOT
repo init -b <my_selected_android_version>
Такой выборочный repo init
с -b
(без -u
) только обновит ветвь манифеста и не затронет ваше дерево.
Теперь просто синхронизируйте его:
repo sync -j8
и через некоторое время ваше дерево Android переключится на другую версию.
Скорость этой операции в основном определяется тем, насколько файл манифеста default.xml
отличается между старой и новой версиями Android - потому что если в новый манифест был добавлен какой-то репозиторий git, он потратит время на его клонирование. И если какой-то репозиторий был удален, если он действительно будет удален.
Но, по большому счету, этот метод все еще намного быстрее, чем инициализация совершенно нового дерева Android с нуля.