Open jet174 opened 7 years ago
Присоединяюсь к вопросу.
Тоже самое. Есть решение?
Проблема решилась. Похоже, что в плагине лежит нерелевантный VKSDK, потому что в полном логи ошибки в Xcode написано, что Library VKSDK not found. Хотя библиотека подключена верно.
Решилось скачиванием последнего VKSDK с официального github, потом Xcode выдаст еще пару ошибок, их можно легко поправить и все получилось.
Я столько намучился в одно время с ionic, точно больше никогда с ним работать не буду. Эта ошибка не vksdk, которая могла отсутствовать, так как она много весит и ее надо класть вручную, а например из-за некорректного конфига(отсутствие ключа) или же был не настроен xcode. Я даже помню как-то все сделаешь, а потом на другом компе начинаешь работать и опять на те же ошибки натыкаешься.
Народ, я с этим модулем промучался 3 дня. Решение очень простое. После установки плагина, заходите в папку ios, где его исходники, потом в папку VKSdk.framework, в ней Versions > A, от туда копируете папку Headers и файл VKSdk вставляете это в корневую папку VKSdk.framework.
@MasTeh спасибо!
Народ, хотите поржать? Я вновь столкнулся с этой проблемой и вновь долго и мучительно её решал. Потом начал рыть в интернетах, и наткнулся на свою же рекомендацию. Мораль такова - ведите личный дневник заметок.
@MasTeh Забавно! Мы уже пишем другой проект, и к кордове никогда уже думаю не вернемся :D
Автоматизация решения от @MasTeh:
Добавьте пару зависимостей в ваш NPM-проект:
npm i -D rimraf ncp
Добавьте скрипт-хук с таким содержимым в любую директорию проекта:
const fs = require('fs');
const path = require('path');
const {promisify} = require('util');
const ncp = promisify(require('ncp').ncp);
const rimraf = promisify(require('rimraf'));
const readFile = promisify(fs.readFile);
const access = promisify(fs.access);
const readdir = promisify(fs.readdir);
// Why: https://github.com/OrangeAppsRu/cordova-social-vk/issues/26#issuecomment-311503502
// Designed for version 1.0.5
const frameworkDirectory = 'VKSdk.framework';
const versionsDirectory = 'Versions';
module.exports = async () => {
const configXml = await readFile('config.xml', 'utf8');
const appNameSearch = /<name>([a-z0-9\-_.]+)<\/name>/i.exec(configXml);
if (!appNameSearch) {
throw new Error('Couldn\'t find the application name in config.xml. Make sure you\'ve added a <name/> tag.');
}
const appName = appNameSearch[1];
const pluginPath = `platforms/ios/${appName}/Plugins/cordova-social-vk`;
try {
await access(pluginPath);
} catch (error) {
throw new Error(`The cordova-social-vk plugin directory "${pluginPath}" doesn't exist. Either add the plugin, fix or remove this hook.`);
}
let versions;
try {
versions = await readdir(path.join(pluginPath, frameworkDirectory, versionsDirectory));
if (versions.length === 0) {
throw new Error();
}
} catch (error) {
throw new Error(`The cordova-social-vk plugin file structure doesn't meet the expectations. Either fix this hook or remove it.`);
}
await rimraf(path.join(pluginPath, frameworkDirectory, `!(${versionsDirectory})`));
await ncp(
path.join(pluginPath, frameworkDirectory, versionsDirectory, versions[0]),
path.join(pluginPath, frameworkDirectory),
);
};
Привяжите этот хук к действию after_prepare
Cordova. Для этого откройте ваш config.xml
, найдите или добавьте тег <platform name="ios">...</platform>
и добавьте внутрь тег:
<hook type="after_prepare" src="путь/до/файла/хука.js" />
Готово. Теперь файлы будут копироваться автоматически при выполнении cordova prepare ...
, cordova build ...
, cordova run ...
и cordova platform add ios
.
Доброго времени суток, не могу скомпилировать приложение выводит вот такую ошибку под системой iOS, (ionic framework), помогите пожалуйста решить: