Обновление: когда вы вызываете .observeSingleEvent, вы вызываете метод асинхронно. Это означает, что метод начнет работать, но ответ придет позже и не будет блокировать основной поток. Вы вызываете этот метод, но данных пока нет, и поэтому вы возвращаете пустой словарь.
Если вы используете блок завершения, то вы получите данные, как только действие метода будет завершено.
func downloadDailyQuote(completion: @escaping ([String:String]) -> Void) {
let reference = Database.database().reference().child("daily")
reference.observeSingleEvent(of: .value) { (snap) in
if let dictionaryWithData = snap.value as? [String:String] {
completion(dictionaryWithData)
} else {
completion(["" : ""])
}
}
}
Это может произойти при попытке установить APK отладки / без знака поверх подписанного APK выпуска из магазина Play.
H:\>adb install -r "Signed.apk"
2909 KB/s (220439 bytes in 0.074s)
pkg: /data/local/tmp/Signed.apk
Success
H:\>adb install -r "AppName.apk"
2753 KB/s (219954 bytes in 0.078s)
pkg: /data/local/tmp/AppName.apk
Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
Решение для этого - удалить , а затем повторно установите или повторно запустите его из среды IDE.
вещь, которая продолжала меня убивать, заключалась в том, что я не знал, что это приложение было установлено для моей гостевой учетной записи (хотя я удалил ее для других учетных записей ..)
, поэтому я искал приложение в диспетчере приложений и просто нажал на удаление для всех пользователей
У меня была такая же проблема. Я получал ошибку, когда пытался запустить в своем устройстве Android не эмулятор.
sudo ionic run android
Я могу исправить это, запустив
adb uninstall com.mypackage.name
вы можете попробовать следующее: adb install -r -d -f your_Apk_path
это случилось со мной, когда я импортировал приложение Android Studio в eclipse.
Я выяснил, что файл andoridmanifest.xml должен быть слегка изменен при импорте из проекта студии Android. Я создал новый тестовый проект и скопировал заголовки, чтобы они совпадали. вуаля, проблема решена.
Вы также можете добавить флаг -d
в установку adb. Он должен игнорировать эту ошибку.
INSTALL_FAILED_VERSION_DOWNGRADE
blockquote>Все приложения для Android имеют имя пакета. Имя пакета уникально идентифицирует приложение на устройстве. Если такое же имя пакета, как и приложение, которое уже установлено на устройстве, то эта ошибка показывает.
- Сначала вы можете удалить приложение с вашего устройства, а затем установить новый.
- Вы может просто увеличить число на каждый каждый раз, когда выпущена новая версия.
Это происходило в моем проекте, потому что я использовал XML-ресурс для установки кода версии.
AndroidManifest.xml:
android:versionCode="@integer/app_version_code"
app.xml:
<integer name="app_version_code">64</integer>
Это не было проблемой в предыдущих версиях adb
, однако, начиная с platform-tools
r16 это больше не разрешается для правильного целого. Вы можете либо принудительно переустановить, используя adb -r
, либо полностью устранить проблему, используя литерал в манифесте:
android:versionCode="64"
В Marshmallow я получил эту ошибку,
Installation error: INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE
Please check logcat output for more details.
Launch canceled!
Ища решение, которое я искал, и пришел сюда. Я удалил приложение, но все еще имею эту проблему в Nexus 6. Позже выяснилось, что в
Settings > Apps > [My app name] have to removed for all user.
Эта ошибка появляется в моем проекте Android с несколькими типами файлов gfx. В конце никаких изменений в файле манифеста не было принято.
Из-за отсутствия знаний об устройствах Android я забыл, что у моего тестового устройства есть второй пользователь. Этот пользователь также имеет установленную версию моего приложения, поэтому мне также нужно удалить приложение для этой учетной записи пользователя, и оно работает.
Просто удалите предыдущий Apk и установите обновленный APK
Сначала удалите приложение из эмулятора:
adb -e uninstall your.application.package.name
Затем попробуйте снова установить приложение.
В соответствии с кодом sdk src из ... \ android-22 \ android \ content \ pm \ PackageManager.java
/**
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package has an older version code than the currently installed package.
* @hide
*/
public static final int INSTALL_FAILED_VERSION_DOWNGRADE = -25;
, если новый пакет имеет более старый код версии, чем установленный в настоящий момент пакет .