Не удалось запустить приложение 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 и повторно синхронизируете проект, в котором он будет работать.