web-dev-qa-db-ja.com

Ionic Android build error:「すべてのフレーバーは、名前付きフレーバーディメンションに属している必要があります」

コンピューターで新しいプロジェクトを開始しましたが、Android向けにビルドできなくなりました

走るとき

ionic cordova platform run Android

私はこのエラーを受け取ります:

All flavors must now belong to a named flavor dimension. 
13
Hugo H

プロジェクトにcordova-plugin-crosswalk-webviewプラグインがインストールされていて、Gradle v4でビルドしようとすると、「フレーバー」エラーが発生します。

ただし、[email protected]にアップグレードする場合(例:Cordova AndroidプラットフォームプロジェクトをAndroid Studio 3でネイティブプラグインコードをデバッグするために開く) 、Gradle v4にアップグレードする必要があるため、cordova-plugin-crosswalk-webviewは現在[email protected]と互換性がありません。

「フレーバー」エラーの手動による回避策として、platforms/Android/build.gradleにデフォルトのフレーバーを挿入できます( こちらを参照 ):

Android { 
    ...
    flavorDimensions "default"
    ...
} 

更新

Gradle v4/[email protected]+およびcordova-plugin-crosswalk-webviewでビルドする場合は、Gradle v4に更新してから、マスターブランチからcordova-Androidをインストールします。 this PR 複数のAPKビルドでの「フレーバー」エラーがマージされました。

cordova platform rm Android 
  && cordova platform add https://github.com/Apache/cordova-Android
26
DaveAlden

ソリューションを見つけました。 :)

Gradleバージョンが問題でした。 4.Xから3.5.1にダウングレードする必要がありました。

を行うことにより、あなたのgradleバージョンを確認してください

gradle -v

If> 4.xの場合、ダウングレードしてください!

1
Hugo H

同じエラーが発生し、それを解決するスクリプトを作成しました。

答えで述べたように、問題は次のとおりです:gradle 4はgradle.buildでflavorDimensionsを必要としています。

ここで確認する場合: https://cordova.Apache.org/docs/en/latest/guide/platforms/Android/#extending-buildgradle

Gradle.buildに含まれるgradle-extra.buildという名前のファイルを作成できます。このファイルを/ platform/Android /に貼り付けるスクリプトを作成するだけです。

だから私は私のプロジェクトルートにこのファイルbuild-extras.gradleを作成しました

Android { 
    flavorDimensions "default"
} 

および./hooks/after_platform_add/copy_build-extras.gradle.jsのスクリプト

#!/usr/bin/env node

var fs = require('fs');
var path = require('path');

if(fs.existsSync(path.resolve(__dirname, '../../platforms/Android'))) {
  fs.createReadStream(path.resolve(__dirname, '../../build-extras.gradle')).pipe(fs.createWriteStream(path.resolve(__dirname, '../../platforms/Android/build-extras.gradle')));
}

ここでフックについて確認できます: https://cordova.Apache.org/docs/en/latest/guide/appdev/hooks/index.html

/ hooks/after_platform_addの下のすべてのスクリプトは、ionic platform add ***の後に実行されます

これにより、gradleをダウングレードしたり、cordova-Androidバージョンを変更したりする必要はありません。

1
Gilson

この問題はこのPRで解決する必要があります: https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/pull/255

0
Ruben Stolk