Приложение отказывается устанавливаться – INSTALL_FAILED_MISSING_SHARED_LIBRARY

Я новичок в программировании, пожалуйста, мне нужна помощь! Мое приложение успешно устанавливалось после каждого обновления, пока я не решил добавить в приложение библиотеку «com.github.PhilJay:MPAndroidChart:v3.1.0-alpha», потому что мне нужно, чтобы пользователь мог просматривать некоторые данные в виде статистических диаграмм. .

Библиотека была успешно синхронизирована, и в ней успешно использовались пакеты и классы. Но когда я пытаюсь установить приложение на свое устройство Android, оно возвращает эту ошибку:

Installation failed with message Failed to commit install session 590492354 with command cmd package
install-commit 590492354. Error: INSTALL_FAILED_MISSING_SHARED_LIBRARY: Package couldn't be installed in
/data/app/com.cenitscitech.www.etimebook-jOP-jv2YuNu7_8qnkfqp-A==: Package com.cenitscitech.www.etimebook requires unavailable shared library com.google.android.things; failing!.

Возможно, эта проблема решена путем удаления существующей версии apk, если она присутствует, а затем повторной установки." Я вставил сюда скриншот:

Сообщение об ошибке:

Я удалил существующую версию apk, очистил место в памяти, но продолжаю получать одно и то же сообщение! Что мне делать дальше, пожалуйста?


person nomacreates    schedule 28.09.2019    source источник
comment
Можете ли вы обновить свой вопрос, включив в него файл AndroidManifest.xml?   -  person kenny_k    schedule 11.10.2019
comment
Да, @kenny_k, проблема заключается в файле манифеста, предоставленном ahasbini. эта запись: ‹uses-library android:name=com.google.android.things /›, находилась в файле манифеста и должна была быть удалена до успешной установки. Спасибо.   -  person nomacreates    schedule 12.10.2019


Ответы (2)


Просмотрел com.github.PhilJay:MPAndroidChart:v3.1.0-alpha репозиторий и не нашел ссылок на com.google.android.things внутри исходного кода.

Вам нужно удалить следующую запись, если она найдена в AndroidManifest.xml вашего приложения, чтобы она снова работала на вашем устройстве:

<uses-library android:name="com.google.android.things" />
person ahasbini    schedule 06.10.2019
comment
Пожалуйста, убедитесь, что вы используете библиотеку, которая работает на разных процессорах. Чтобы убедиться в этом, перейдите по ссылке ниже: android-developers.googleblog.com/2019/01/ - person Susheel Tickoo; 11.10.2019
comment
@ahasbini, это решило проблему, да! Большое спасибо! - person nomacreates; 12.10.2019

Скорее всего, вы устанавливаете приложение на устройство, не являющееся устройством Android Things. Я подозреваю, что добавленная вами библиотека либо имеет некоторую транзитивную зависимость от com.google.android.things, либо что-то еще изменилось в вашем проекте.

Чтобы обойти это, вы должны сделать следующие 2 вещи:

1. Отметьте, что Android Things не требуется на устройстве в вашем файле AndroidManifest.xml:

<uses-library
   android:name="com.google.android.things"
   android:required="false"
   tools:replace="android:required" />

(tools:replace не является строго обязательным, но это просто на случай, если что-то в процессе слияния манифеста переопределит вашу настройку.)

2. В коде вашего приложения, прежде чем делать какие-либо вызовы API вещей, убедитесь, что они доступны на текущем устройстве. Это можно проверить с помощью следующего фрагмента кода:

public boolean isThingsDevice(Context context) {
    final PackageManager pm = context.getPackageManager();
    return pm.hasSystemFeature(PackageManager.FEATURE_EMBEDDED);
}

Только выполнение 1 должно решить проблему установки, но ваше приложение аварийно завершится, если вы сделаете какие-либо вызовы API Things на устройстве, отличном от устройства Android Things.

person kenny_k    schedule 11.10.2019