Используйте фреймворк Android из консольных приложений

#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, проблема заключается в проверке его из кода.