Как протолкнуть gapps через adb на рутованное устройство

У меня самсунг т355с. Китайская модель обычного планшета без гаппсов и насколько я понял заблокированный загрузчик. Для него нет кастомного рекавери. Работает 5.0.1

Мне удалось рутировать его с помощью kingo и перепробовать множество способов вставлять в него приложения Google. Закончилось тем, что он пока замуровался ... перезагрузил оригинальный ром.

Вопрос в том. После исправляю и рутирую его снова Используя adb с рутом. Как я могу нажать гаппсы

Одним из способов может быть: распаковать ZIP-файл GApps и отделить файлы, предназначенные для копирования, в системный раздел. Затем скопируйте каждый из них по отдельности в нужное место. Чтобы узнать местоположение, найдите какой-нибудь скрипт с инструкциями по восстановлению. Вы бы поняли идею. Перезагрузитесь и посмотрите, что произойдет.
Не забудьте настроить разрешения (также можно найти в этом скрипте). Кроме того, вам нужно будет перемонтировать /systemчтение-запись до и обратно в режим только для чтения после нажатия приложений.
использовал link2sd, чтобы преобразовать их в систему, после некоторых ошибок я вошел в Google с помощью Gmail, но не могу подключиться к магазину игр @Izzy, какие разрешения мне нужно изменить?
Как уже указывал @Firelord, .zipсодержит скрипт: META-INF/com/google/android/updater-scriptсодержит шаги, которые обычно выполняет пользовательское восстановление. Используйте это как руководство — хотя вам придется «преобразовать» команды.

Ответы (2)

Я действительно не пробовал это, но возможный подход будет следовать шагам, которые пользовательское восстановление будет выполнять при установке («перепрошивке») файла, .zipкоторый можно найти в META-INF/com/google/android/updater-script(после извлечения из архива). Для архива Kitkat GApps это выглядит так:

ui_print("Установка файлов...");
run_program("/sbin/busybox", "mount", "/system");
показать_прогресс (1, 15);
удалить("/system/app/Provision.apk","/system/app/QuickSearchBox.apk","/system/app/priv-app/SetupWizard.apk","/system/app/priv-app/Velvet .apk","/system/app/Vending.apk","/system/app
package_extract_dir("система", "/система");
set_perm(0, 0, 0755, "/system/addon.d/70-gapps.sh");
package_extract_dir("необязательный", "/tmp");
package_extract_file("install-Optional.sh", "/tmp/install-Optional.sh");
set_perm(0, 0, 0777, "/tmp/install-Optional.sh");
run_program("/tmp/install-Optional.sh", "");
показать_прогресс (1, 15);
ui_print("Очистка и настройка метаданных...");
set_metadata_recursive("/system/addon.d", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "возможности", 0x0, "selabel", "u:object_r: системный_файл:s0");
set_metadata_recursive("/system/app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "возможности", 0x0, "selabel", "u:object_r:system_file: с0");
set_metadata_recursive("/system/priv-app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "возможности", 0x0, "selabel", "u:object_r: системный_файл:s0");
set_metadata_recursive("/system/etc/permissions", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "возможности", 0x0, "selabel", "u:object_r: системный_файл:s0");
set_metadata_recursive("/system/etc/preferred-apps", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "возможности", 0x0, "selabel", "u: объект_r:системный_файл:s0");
set_metadata("/system/etc/g.prop", "uid", 0, "gid", 0, "режим", 0755, "возможности", 0x0, "selabel", "u:object_r:system_file:s0" );
set_metadata_recursive("/system/framework", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "возможности", 0x0, "selabel", "u:object_r:system_file: с0");
set_metadata_recursive("/system/lib", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "возможности", 0x0, "selabel", "u:object_r:system_file: с0");
set_metadata_recursive("/system/usr/srec/en-US", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "возможности", 0x0, "selabel", " u:object_r:системный_файл:s0");
set_metadata_recursive("/system/vendor/pittpatt", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "возможности", 0x0, "selabel", "u:object_r: системный_файл:s0");
run_program("/sbin/busybox", "umount", "/system");
ui_print("Установка завершена!");

Мы, конечно, можем пропустить комментарии/отладочный вывод и, таким образом, по существу закончить эти шаги. Я предполагаю, что вы распаковали .zipсодержимое файла где-то на своем устройстве и сидите в оболочке (терминал или adb shell) с правами root ( su), чтобы начать с:

  1. mount -o remount,rw /system(строка 2)
  2. если файлы, перечисленные в строке 4, существуют: rm -f <file>для каждого из них
  3. скопируйте все содержимое каталога .zipфайла system/в /system(строка 5)
  4. chmod 0755 /system/addon.d/70-gapps.sh(строка 6)
  5. (примените предыдущие 2 шага к строкам 7-9)
  6. sh /tmp/install-optional.sh(строка 10)

Теперь становится немного сложнее (для новичков) интерпретировать set_metadata_recursiveкоманды. Я объясню это на первом (строка 13):

/system/addon.dдолжен принадлежать uid 0 и gid 0, права доступа к файлам должны быть 0755 (dmode — режим каталога, fmode — файловый режим), атрибуты SELinux — u:object_r:system_file:s0. Вы могли заметить, что я пропустил два столбца: я понятия не имею, что это "capabilities", 0x0значит, поэтому я не могу это объяснить (если кто-то знает, пожалуйста, прокомментируйте). Итак, давайте сделаем это:

chown -R root:root /system/addon.d   # -R is recursive, root is user/group id 0
chmod -R 755 /system/addon.d         # as dmode and fmode are the same, we can do that
# at this place missing: SELinux properties. I've never dealt with those

Если, как в строке 14, fmode и dmode различаются, вам также придется позаботиться об этом. Примените dmode, как указано выше, и за ним следует a find <dir> -type f -print0 | xargs chmod <mode>, заменив его <dir>первым аргументом set_metadata_recursiveи <mode>соответствующим fmode.

Наконец, снова перемонтируйте /systemтолько для чтения: mount -o remount,ro /system– или просто перезагрузитесь (в любом случае вам придется это сделать), что также позаботится об этом.

Я пропустил материал SELinux из-за отсутствия знаний. Скорее всего, он будет работать и без него, но может быть полезно сделать для дополнительной безопасности :)

gapps-remove.txtНекоторые GApps также поставляются с файлом. Его можно сравнить с файлами, которые у вас есть или которые вы собираетесь копировать в /system. Это может помочь им узнать, чего им не хватает.

Метки SElinux, которые вы устанавливаете с помощью команды «chcon», и вы можете проверить результат с помощью «ls -laZ».

Для: set_metadata_recursive("/system/addon.d", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u: объект_r:системный_файл:s0");

это будет: chcon "u:object_r:system_file:s0" /system/addon.d

Вы можете проверить это, введя: ls -laZ /system/addon.d

источник использования "chcon": https://books.google.pl/books?id=AKbNBgAAQBAJ&pg=PA101&lpg=PA101&dq=%22u:object_r:system_file:s0%22&source=bl&ots=MbpesnKLkI&sig=ACfU3U2sJc-vYndDkUOk1Tru42hrcuPyUQX&hl&pl&sa= =2ahUKEwjqwqKiwZDnAhWiAxAIHZH8AGAQ6AEwAXoECAkQAQ#v=onepage&q=%22u%3Aobject_r%3Asystem_file%3As0%22&f=false