その他

Androidプラットフォーム 11.0.0特有のビルドエラーについて

Monacaチームの小田川です。

MonacaでAndroidプラットフォーム 11.0.0がサポートされてから1ヶ月以上が経ちました。Androidプラットフォーム 11.0.0については、以下を参照してください。

Androidプラットフォーム 11.0.0では、Androidビルドの際に使用されるAndroid Gradle Pluginのバージョンが、7.2.1に更新されました。このバージョン更新の影響により、ビルドエラーが発生するケースが増えてきました。

今回は、Android Gradle Plugin 7.2.1の影響について説明していきたいと思います。

非推奨の機能について

Gradle 4.7以降、gradleファイルに設定するdependenciesで使用する以下の機能が非推奨になりました。

  • compile
  • runtime
  • testCompile
  • testRuntime

詳しくは、Dependency managementを参照してください。

Gradle 7.0以降からは、上記の機能は、非推奨ではなく廃止されました。

Androidプラットフォーム 10系で使用されているAndroid Gradle Pluginのバージョンは、4.2.2になります。Android Gradle Plugin 4.2.2では、Gradle 6.7.1以降の6系が使用されています。Androidプラットフォーム 11系で使用されているAndroid Gradle Plugin 7.2.1では、Gradle 7.0以降が使用されるため、上記の非推奨の機能は使用できません。

そのため、Androidプラットフォーム 11.0.0でビルドを実行した際に、Cordovaプラグインが上記の廃止された機能を使用している場合は、ビルドエラーが発生します。

ビルドエラーの例

定期的に更新されていないCordovaプラグインでは、上記の廃止された機能に対しての対応が行われていないケースが多く見られます。

例として、下記のCordovaプラグインは、開発が終了しているため、更新が行われていません。

phonegap-plugin-barcodescannerでは、gradleファイルのdependenciesに、下記のようにcompileが設定されています。

barcodescanner.gradle

repositories{
    jcenter()
    flatDir{
        dirs 'libs'
    }
}

dependencies {
    compile(name:'barcodescanner-release-2.1.5', ext:'aar')
}

android {
    packagingOptions {
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
    }
}

この状態でAndroidプラットフォーム 11.0.0を使用してビルドを実行すると、下記のビルドエラーが発生します。

A problem occurred evaluating script.
> 
Could not find method compile() for arguments [{name=barcodescanner-release-2.1.5, ext=aar}] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

ビルドエラーの対応方法

廃止になった機能は、下記のように変更することで対応することができます。

変更前変更後
compileimplementation
runtimeruntimeOnly
testCompiletestImplementation
testRuntimetestRuntimeOnly

phonegap-plugin-barcodescannerの場合も、下記のようにcompileをimplementationに変更することでビルドエラーを回避することができます。

dependencies {
    implementation(name:'barcodescanner-release-2.1.5', ext:'aar')
}

廃止された機能を使用しているCordovaプラグインを利用する必要がある場合は、上記のように対応を行ったカスタム版のCordovaプラグインを作成して利用する必要があります。

おわりに

Monacaでは、旧CordovaバージョンのMonacaプロジェクトの互換性のためにphonegap-plugin-barcodescannerの提供を行っていましたが、Androidプラットフォーム 11.0.0以降からは、phonegap-plugin-barcodescannerを使用することができなくなります。

現在、Monacaでは、バーコードスキャナープラグインの提供を行なっています。廃止された機能の対応を行なったphonegap-plugin-barcodescannerの作成が難しい場合は、バーコードスキャナープラグインへの移行を検討してみてください。

前の記事へ

次の記事へ

一覧へ戻る

「その他」カテゴリの最新記事

PAGE TOP