Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@tnj

Android Studio 3.0でのGradleプラグインの非互換性

More than 3 years have passed since last update.

まとめ: Gradleプラグイン作者の皆様におかれましては、 Gradle Android Plugin 3.0.0-alpha2 において出力APKファイルに依存するプラグインがだいたい動かなくなりましたので、一度動作を検証されることをお勧めします

高速化のため挙動が変わった部分

Android Plugin からプロジェクトがビルドで出力するAPKファイルを取得したいときは、 variant の outputs から outputFile を参照するってことをやりますが、 3.0.0 から高速化の兼ね合いでこれが参照できなくなりました。

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        file = output.outputFile // outputFile が参照できない
    }
}

configuration フェーズだけかと思いきや、ビルドに入っても(実際にそのタスクが走らない限り)参照できないままです。

発生する現象

大体において大変に不幸な感じで、例えば DeployGate の Gradle プラグインだと configuration するだけでも

Error:Could not get unknown property 'variantOutputData' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=prodDebug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

なんてエラーで止まって原因の切り分けが困難で(なおこういうときは ./gradlew --stacktrace でスタックトレースが出るので原因を探しやすくなります)、別の例で Fabric Beta にアップロードしようとしてみると、

Error:Execution failed for task ':app:crashlyticsUploadDistributionProdDebug'.
> Not valid.

といった感じで、どちらにしてもとても人間に優しくないエラーメッセージが出ます。

既知の問題で、まだ新APIが実装されてない

ソース: https://developer.android.com/studio/preview/features/new-android-plugin-migration.html#variant_api

API change in variant output

Using the Variant API to manipulate variant outputs is broken with the new plugin.

てなわけで壊れて(broken)ます。壊れてるのは一時的な問題ですが、

As an alternative, we will introduce new APIs to provide similar functionality.

将来的には新しいAPIで対応してねって話になるようなので、更新され次第対応する必要があります。今は大人しく次のバージョンを待つしかない😇

その他参考情報

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tnj
世界のスマホアプリ開発の現場を爆速化するための仕組みを作っています。 https://deploygate.com
deploygate
毎日のフィードバックで、アプリ開発をもっと楽しく。DeployGateを運営しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?