Не удалось запустить приложение Ionic после обновления до Android Studio 3.0
Здесь моя Ionic Info
cli: (/Пользователи /billb/dev/customer-mkt-app/node_modules)
@ionic/cli-utils : 1.15.2
ionic (Ionic CLI) : 3.15.2
глобальные пакеты:
cordova (Cordova CLI) : 7.0.1
локальные пакеты:
@ionic/app-scripts : 3.0.1
Cordova Platforms : android 6.2.3 ios 4.4.0
Ionic Framework : ionic-angular 3.3.0
система:
Android SDK Tools : 26.1.1
ios-deploy : 1.9.2
Node : v6.11.5
npm : 3.10.10
OS : macOS Sierra
Xcode : Xcode 9.0.1 Build version 9A1004
Переменные среды:
ANDROID_HOME : /Users/billb/Library/Android/sdk
Разное:
backend : pro
Я могу успешно создать приложение. Когда я пытаюсь открыть его в Android Studio, я получаю несколько ошибок, в основном, из-за сбоя синхронизации градиента. Здесь 5 ошибок в консоли Сообщения.
Невозможно разрешить зависимость для ': @debug/compileClasspath': Не удалось разрешить проект: CordovaLib. Не удалось разрешить проект: CordovaLib.
Требуется: проект:
Проект: заявляет зависимость от конфигурации "debugCompile" до конфигурации "debug", которая не объявлена в дескрипторе для проекта>: CordovaLib.
Невозможно разрешить зависимость для ': @debugAndroidTest/compileClasspath': не удалось разрешить проект: CordovaLib. Не удалось разрешить проект: CordovaLib.
Требуется: проект:
Проект: заявляет зависимость от конфигурации "debugCompile" до конфигурации "debug", которая не объявлена в дескрипторе для проекта>: CordovaLib.
Невозможно разрешить зависимость для ': @debugUnitTest/compileClasspath': не удалось разрешить проект: CordovaLib. Не удалось разрешить проект: CordovaLib.
Требуется: проект:
Проект: заявляет зависимость от конфигурации "debugCompile" до конфигурации "debug", которая не объявлена в дескрипторе для проекта>: CordovaLib.
Невозможно разрешить зависимость для ': @release/compileClasspath': не удалось разрешить проект: CordovaLib.
Не удалось разрешить проект: CordovaLib. Требуется: проект:
Project: объявляет зависимость от конфигурации 'releaseCompile' до конфигурации 'release', которая не объявлена в дескрипторе для проекта: CordovaLib.
Невозможно разрешить зависимость для ': @releaseUnitTest/compileClasspath': не удалось разрешить проект: CordovaLib.
Не удалось разрешить проект: CordovaLib. Требуется: проект:
Project: объявляет зависимость от конфигурации 'releaseCompile' до конфигурации 'release', которая не объявлена в дескрипторе для проекта: CordovaLib.
Я действительно не знаю, что это значит, и Google не оказал никакой реальной помощи. Что мне нужно сделать здесь?
Примечание: обнаружено это после публикации этого. Ретранслировать его здесь, если это поможет кому-то другому.
Не обновляйте до Android Studio 3
Ответы
Ответ 1
Я прокомментировал строки ниже в файле build.gradle:
//debugCompile project(path: 'CordovaLib', configuration: 'debug')
//releaseCompile project(path: 'CordovaLib', configuration: 'release')
и добавил:
compile project(':CordovaLib')
Это сработало для меня.
Ответ 2
Это известная проблема, которую вы можете найти связанную проблему JIRA здесь и основная проблема заключается в этом один и оба "в процессе". И на github уже есть запрос на перенос, который вы можете попробовать, но я не могу пообещать вам, что это уже рабочая версия. Вы можете установить его так, если хотите попробовать:
cordova platform add https://github.com/infil00p/cordova-android.git#StudioThreeFix
Ответ 3
Если вы получите такую ошибку в Android Studio 3.0.1:
Unable to resolve dependency for :@debug/compileClasspath: Could not resolve project :CordovaLib.
Перейдите в файл build.gradle
→ найдите зависимости и измените их так:
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
// SUB-PROJECT DEPENDENCIES START
//debugCompile(project(path: "CordovaLib", configuration: "debug"))
//releaseCompile(project(path: "CordovaLib", configuration: "release"))
compile project(':CordovaLib')
// SUB-PROJECT DEPENDENCIES END
}
Ответ 4
Если вы используете Кордову build.gradle, автоматически генерируется, а когда вы строите проект, изменение принятого ответа выше, перезаписывается обратно в старое, что не работает.
Так что редактируйте платформы /android/cordova/lib/builder/GradleBuiler.js Прокомментируйте строки 136-139 и добавьте следующую строку
/*depsList += ' debugCompile(project(path: "' + libName + '", configuration: "debug"))';
insertExclude(p);
depsList += ' releaseCompile(project(path: "' + libName + '", configuration: "release"))';
insertExclude(p);
*/
depsList += " compile project(':CordovaLib')";
insertExclude(p);
Ответ 5
Добавьте это в зависимости от установки Android.gradle. Все это.
compile project(':CordovaLib')
Например:
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
// SUB-PROJECT DEPENDENCIES START
//debugCompile(project(path: "CordovaLib", configuration: "debug"))
//releaseCompile(project(path: "CordovaLib", configuration: "release"))
compile project(':CordovaLib')
compile "com.android.support:support-v4:24.1.1+"
compile "com.google.android.gms:play-services-analytics:+"
// SUB-PROJECT DEPENDENCIES END
}
Ответ 6
Итак, я просто провел два дня, сражаясь с этим и придумал полу-ручное решение.
Поскольку Gradle решил выкорчевать формат зависимости без какого-либо льготного периода для миграции, мы вынуждены делать такие вещи.
(Инструкции под Linux. Для Windows вам понадобится 7zip или что-то подобное для последнего шага)
Из вашего домашнего каталога пользователя перейдите в .cordova/lib/npm_cache/cordova-android
.
Там должна быть одна или несколько папок с номерами версий.
Обычно запускается только последняя версия.
Открой это.
Удалите каталог package
, но не файл package.tgz
.
Распакуйте файл package.tgz
, затем удалите его или переместите в резервное хранилище. (есть несколько дополнительных файлов, которые мы не хотим повторно упаковывать позже)
Редактирование package/bin/templates/cordova/lib/plugin-build.gradle
файлов package/bin/templates/cordova/lib/plugin-build.gradle
и внутренних dependencies
удаляет эти строки
debugCompile project(path: ":CordovaLib", configuration: "debug")
releaseCompile project(path: ":CordovaLib", configuration: "release")
Замените их
implementation project(path: ":CordovaLib")
Архивируйте каталог пакета. В Linux короткой командой является tar czf package.tgz package
. В Windows вам придется создать архив .tar.gz
с 7zip и переименовать его в .tgz
.
После этого при запуске cordova prepare
в чистом репозитории, который работал со старыми версиями, снова будет работать, если только некоторые из плагинов явно не используют старый формат декларации и не нуждаются в обновлении (пример)
Ответ 7
Это моя конфигурация gradle.build
:
dependencies {
implementation fileTree(dir: 'libs', include: '*.jar')
// SUB-PROJECT DEPENDENCIES START
implementation(project(path: "CordovaLib"))
implementation(project(path: "cordova-social-ok:odnoklassniki-android-sdk")){
exclude module:("CordovaLib")
}
implementation(project(path: "cordova-social-vk:vksdk_library")){
exclude module:("CordovaLib")
}
compile "com.onesignal:OneSignal:3.7.1"
compile "com.facebook.android:facebook-android-sdk:4.+"
// SUB-PROJECT DEPENDENCIES END
}
Но у меня все еще есть эта ошибка:
* What went wrong:
Could not determine the dependencies of task ':cordova-social-ok:odnoklassniki-android-sdk:compileReleaseAidl'.
> Could not resolve all task dependencies for configuration ':cordova-social-ok:odnoklassniki-android-sdk:releaseCompileClasspath'.
> Could not resolve project :CordovaLib.
Required by:
project :cordova-social-ok:odnoklassniki-android-sdk
> Project :cordova-social-ok:odnoklassniki-android-sdk declares a dependency from configuration 'releaseCompile' to configuration 'release' which is not declared in the descriptor for project :CordovaLib.
Кроме того, это проект Cordova, поэтому файл gradle.build
автогенерируется, поэтому я не могу его изменить.
Ответ 8
Когда вы сталкиваетесь с этим типом проблемы, вы просто снижаете версию градиента до версии 2.2.3 и повторно синхронизируете проект, в котором он будет работать.