#android
#Android
Вопрос:
У меня такое чувство, что я знаю ответ на этот вопрос, но я полагаю, что хотел бы посмотреть, что SO должен был сказать.
Я надеюсь создать консольное приложение, которое может принимать файл .apk и извлекать метаданные (например, название версии / номер версии). Я могу использовать PackageManager.getPackageArchiveInfo()
из своего приложения для Android просто отлично, но мне нужно иметь возможность вызывать его из командной строки. Однако классы в android.jar похоже, что это просто заглушки, поэтому в конечном итоге это не работает.
Кто-нибудь знает способ сделать это?
Ответ №1:
Для apk, для которых у вас нет сертификата подписи, вы не можете получить доступ к содержимому apk, не убедившись, что содержимое существует.
Как вы заметили, android.jar это заглушки. Это связано с тем, что система Android использует собственный код, который предназначен для работы на процессорах ARM и (вероятно) не будет работать в вашей системе. Итак, они упаковывают заглушки для всего кода Java, и единственный способ «запустить» фактическую библиотеку — это выполнить на виртуальной машине с полной версией android.jar , который будет представлять собой среду ARM (реальный телефон или эмулятор).
Для этого могут быть способы настроить «консольное» приложение, но оно должно взаимодействовать с виртуальной машиной Android, чтобы получить рабочую версию android.jar . Я предполагаю, что это может потребовать больше усилий, чем вы хотели бы погрузиться в это.
Комментарии:
1. Я думаю, вы абсолютно правы — это больше работы, чем я хочу погрузиться в это. Это не критически важно или что-то еще. Я предположил, что это, вероятно, будет ответом. Спасибо!
Ответ №2:
Я смог открыть файл .apk и просмотреть его содержимое (в том числе AndroidManifest.xml ) с помощью WinZip…
Надеюсь, это поможет…
Комментарии:
1. У меня нет проблем с открытием файла .apk, проблема заключается в проверке его из кода.