#ionic-framework
#ionic-framework
Вопрос:
Установка «cordova-plugin-firebase» для Android Ошибка при обработке действия! Попытка возврата… Не удалось установить ‘cordova-plugin-firebase’: Ошибка: ого! EPERM: операция не разрешена, разорвать связь ‘F:ionicPkjshopMerchantplatformsandroidappsrcmain ‘ в Object.unlinkSync (fs.js:1129:3) в mayCopyFile (F:ionicPkjshopMerchantplatformsandroidcordovanode_modulesfs-extralibcopy-synccopy-sync.js:59:8)
Ответ №1:
Как указано в этой ссылке: https://github.com/arnesson/cordova-plugin-firebase/issues/1154 для этого существует возможное решение, которое не понижает рейтинг до cordova@8.0.0
Изучая сообщение об ошибке, возникающее во время установки плагина firebase, мы провели сеанс отладки и обнаружили, что что-то пошло не так, пока плагин пытался скопировать сервисы Google.файл json из папки плагина в папку проекта.
Сообщение об ошибке было: Ошибка при обработке действия! Попытка возврата… Не удалось установить ‘cordova-plugin-firebase-lib’: Ошибка: Ой-ой! EPERM: операция не разрешена, отсоедините ссылку ‘[Папка моего проекта] apk platforms android app src main’
Это что-то с правами на запись в файл, но мы не смогли решить эту проблему, изменив права доступа к папкам и индексирование.
Из трассировки стека мы увидели, что операция копирования была обработана функцией mayCopyFile в copy-sync.js файл javascript , который был расположен в ..папка apk node_modules fs-extra lib copy-sync.
Вот тело функции:
function mayCopyFile (srcStat, src, dest, opts) {
if (opts.overwrite) {
fs.unlinkSync(dest)
return copyFile(srcStat, src, dest, opts)
} else if (opts.errorOnExist) {
throw new Error('${dest}' already exists)
}
}
Вызовы fsunlinkSync и CopyFile здесь приводят к сбою установки. Мы не смогли продолжить отладку дальше, возможно, было бы лучше продолжить, но мы остановились здесь и нашли это решение:
Поскольку эти строки кода пытаются скопировать google-сервисы.файл json из ..apk plugins cordova-plugin-firebase src android расположение в ..apk platforms android app src main destination, мы решили сделать эту копию вручную.
Итак, вот шаги, которые мы выполнили:
Убедитесь, что у вас есть чистая папка проекта cordova без плагина firebase.
Установите платформу Android 9.0.0, если ее еще нет: платформа cordova rm android платформа cordova добавить android@9.0.0
Закомментируйте строки fsunlinkSync и CopyFile в функции mayCopyFile в ..apk node_modules fs-extra lib copy-sync copy-sync.js досье.
установить плагин firebase: добавить плагин cordova cordova-plugin-firebase-lib@3.0.0 (Мы всегда использовали эту библиотеку. К сожалению, cordova-plugin-firebase выдает другие ошибки сборки)
Убедитесь, что плагин установлен, а платформа — android 9.0.0 cordova plugin ls cordova platform ls
Скопируйте google-сервисы.файл json из ..apk plugins cordova-plugin-firebase src android расположение в ..apk platforms android app src main destination, вручную.
Перед сборкой cordova раскомментируйте строки кода, которые вы закомментировали на 3-м шаге, потому что сборка cordova скопирует множество файлов из некоторого исходного местоположения в некоторое место назначения, которое неразумно копировать вручную.
Отредактируйте файл build.gradle в папке apk platforms android (измените версию gradle соответствующим образом): путь к классу ‘io.fabric.tools:gradle: 1.28.0’
cordova build android
cordova run android
Это сработало. Конечно, мы добавили плагин cordova-device, отредактировали config.xml , добавлены google-сервисы.json в корневую папку проекта и т. Д., Как обычно, Для обеспечения работы плагина.