これが私のIonic情報です
cliパッケージ:(/ Users/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で開こうとすると、いくつかのエラーが発生します。主にgradle同期の失敗に関するものです。メッセージコンソールには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。必須:プロジェクト:
プロジェクト:構成「releaseCompile」から構成「release」への依存関係を宣言しますが、これはプロジェクト:CordovaLibの記述子で宣言されていません。
':@ releaseUnitTest/compileClasspath'の依存関係を解決できません:プロジェクト:CordovaLibを解決できませんでした。
プロジェクトを解決できませんでした:CordovaLib。必須:プロジェクト:
プロジェクト:構成「releaseCompile」から構成「release」への依存関係を宣言しますが、これはプロジェクト:CordovaLibの記述子で宣言されていません。
私はこれが何を意味するのか本当に知りません、そして、Googleは本当の助けを何も示しませんでした。ここで何をする必要がありますか?
注:これを投稿した後にこれを発見しました。他の人の助けになる場合に備えて、ここで中継します。
Build.gradleファイルで以下の行をコメントしました。
//debugCompile project(path: 'CordovaLib', configuration: 'debug')
//releaseCompile project(path: 'CordovaLib', configuration: 'release')
追加された:
compile project(':CordovaLib')
これは私のために働いた。
Cordovaを使用している場合、build.gradleが自動的に生成され、次にプロジェクトをビルドするときに、上記の承認済みの回答の変更が、機能しない古いものに上書きされます。
したがって、platforms/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);
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
}
これは既知の問題であり、関連するjiraの問題を見つけることができます here と根本的な問題は this this であり、両方とも「進行中」です。そして、すでに githubでのプルリクエスト があり、試してみることができますが、すでに動作するバージョンであることを約束することはできません。あなたがそれを試してみたいのであれば、このようにインストールすることができます:
cordova platform add https://github.com/infil00p/cordova-Android.git#StudioThreeFix
これをAndroid build .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
}
OK、解決策を見つけました。
Cordova-Android:6.3.0を使用していました。バージョンを7.1.0に更新し、config.xmlのこの行を変更しました
以前は:
<preference name="Android-minSdkVersion" value="16" />
今私は使用しています:
<preference name="Android-minSdkVersion" value="19" />
このように、ionic cordova
run Androidは、build.gradle
の行を変更せずに再び機能します。
だから、私はこれと戦うために2日間を費やし、半手動の解決策を思いついた。
Gradleは、移行のための猶予期間なしで依存形式を根絶することを決定したため、このようなことを強制されます。
(Linuxでの手順。Windowsの場合、最後のステップで7Zipまたは同様のものが必要です)
ユーザーのホームディレクトリから.cordova/lib/npm_cache/cordova-Android
に移動します。
そこには、バージョン番号が付いた1つ以上のフォルダーがあります。
通常、最新バージョンのみが実行されます。
それを開く。package
ディレクトリを削除しますが、package.tgz
ファイルはnot削除します。package.tgz
ファイルを解凍してから削除するか、バックアップ場所に移動します。 (後で再パッケージ化したくない余分なファイルがいくつか生成されます)
ファイル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では、7Zipで.tar.gz
アーカイブを作成し、.tgz
に名前を変更する必要があります。
その後、一部のプラグインが明示的に古い宣言形式を使用し、更新する必要がない限り、古いバージョンで動作するクリーンリポジトリでcordova prepare
を実行すると再び動作します( example )
これは私の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
ファイルは自動生成されるため、変更できません。
この種の問題に直面しているときは、gradleバージョンを2.2.3に格下げし、動作するプロジェクトを再同期するだけです。
構成「コンパイル」は廃止され、「実装」に置き換えられています。2018年末に削除されます。
「コンパイル」を「実装」に置き換えるだけです
dependencies {
// SUB-PROJECT DEPENDENCIES START
//debugCompile(project(path: "CordovaLib", configuration: "debug"))
//releaseCompile(project(path: "CordovaLib", configuration: "release"))
implementation project(':CordovaLib')
// SUB-PROJECT DEPENDENCIES END
}