com.android.support.* の dependencies のバージョンが揃わない件

直感的に分かりかねる(分からない)のが「com.android.support.*」の内部的な依存関係.

今や, 下位互換の compat が本流となり, support やら v7 やら v4 やら複雑すぎて.

ふと, RecyclerView のバグらしく.

it is fixed internally, so in the next release it should be fine.

Issue 230295 - android - RecyclerView 25.1.0 StaggeredGridLayoutManager GapWorker prefetch FC with full-span items - Android Open Source Project - Issue Tracker - Google Project Hosting

なので, やむなくバージョンを 25.1.0 から 25.0.1 に下げる.

すると, AndroidStudio が build.gradle の該当行を色変化で「新バージョンがあるよ」と教えてくるが無視.

ところが, 入れ替わってないようで, 同様の Exception.

java.lang.IllegalArgumentException: Pixel distance must be non-negative

プロジェクト自体 clean しても rebuild しても変化なしで

「バージョンがコンフリクト」

と言われまくる.

解決法

ResolutionStrategy で強制.
ResolutionStrategy - Gradle DSL Version 3.3


configurations.all {
  resolutionStrategy {
    force "com.android.support:support-v4:$rootProject.supportLibraryVersion"
    force "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion"
    force "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
    force "com.android.support:support-compat:$rootProject.supportLibraryVersion"
    force "com.android.support:support-annotations:$rootProject.supportLibraryVersion"
    force "com.android.support:design:$rootProject.supportLibraryVersion"
    force "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
    force "com.android.support:percent:$rootProject.supportLibraryVersion"
  }
}

外部ライブラリからの依存があるようで, androidDependencies に頼りながらシコシコ強制.

25.1.0 が remove されたのはビルド時ログで確認できたが.

グループとかツリーの根本からの指定とかあるのではないかと思いつつ朝.

android-apt が不要となった ButterKnife


Android-Studio dependencies のバージョン記述を「+ (プラス) のみ」で常に最新バージョンに対応させる

MavenRepository 経由でライブラリを追加するとして, 最近の Android-Studio では, GUI上の選択操作から build.gradle に書き込んでくれる.

Choose_Library_Dependency_と_Project_Structure

サポートライブラリや GooglePlay ライブラリのバージョン記述の形式が

「19.x.x」( x: 数字 )

でもなく

「19.x.+」

でもなく

「+」

のみだったりする.

これまで書いてた dependencies の記述

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.11.+'
    }
}

とか

dependencies {
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.android.support:appcompat-v7:19.1.0'
    compile 'com.google.android.gms:play-services:48.0.3'
}

などは, すべて「+ ( プラス ) 」のみの記述にして,

続きを読む >>


Support Library のバージョンを最新版にするいまどきの dependencies 記述 (AndroidStudio + gradle)

いろいろ記述方法が変わっているようにみえる.

最近, 遭遇したのは play-service ライブラリの

dependencies 部分のバージョン記述でこんなことが.

...
dependencies {
    ...
    compile 'com.google.android.gms:play-services:+'
    ...
}
...

Google Analytics SDK v4 for Android を実装する

いまどきの開発で一番の依存頻度が多いライブラリといえば

バージョン付きの「Support Library」なのですが,

公式リファレンスを見ると, こうなっています.

Support_Library_Setup___Android_Developers

Support Library Setup | Android Developers

一方, AndroidStudioの機能を使って, ライブラリの依存を追加すると,

続きを読む >>


gradle の dependencies は「Gradle, please」に聞け

 

AndroidStudioを使うようになって、
「あれ、こんな記述で良かったっけ?」
「あれ、これ、最新バージョンなんぼ?」
などと思うことがあります。

 

dependencies {
    // Google Play Services
    compile 'com.google.android.gms:play-services:4.0.30'

    // Support Libraries
    compile 'com.android.support:support-v4:19.0.0'
    compile 'com.android.support:appcompat-v7:19.0.0'
    compile 'com.android.support:gridlayout-v7:19.0.0'
    compile 'com.android.support:support-v7-mediarouter:19.0.0'
    compile 'com.android.support:support-v13:19.0.0'

    // Note: these libraries require the "Google Repository" and "Android Repository"
    //       to be installed via the SDK manager.
}

 

MavenCentralRepository を参照しながら
すぐに教えてくれます。

 

Gradle__please 2

Gradle__please 3

続きを読む >>


Android Studio に今は必ず必要な build.gradle の記述

 

もう、1億万回くらい設定やりましわ,これ。

[File] - [Project Structure]

今の Android Studio (I/O preview) 0.1.3 では、標準でもれなく
こんなダイアログが当たり前に表示されますが。

build.gradle

We will provide a UI to configure project settings later. Until then, please manually edit your build.gradle file to configure source folders, libraries and dependencies.

NOTE THAT EDITS MADE IN THE FOLLOWING DIALOG DO NOT AFFECT THE GRADLE BUILD.
The dialog can be used for temporary adjustments to SDKs etc.

私たちは、後でプロジェクトの設定を構成するためのUIを提供します。それまでは、ソースフォルダ、ライブラリと依存関係を設定するためにあなたのbuild.gradleファイルを手動で編集してください。

次のダイアログIN MADE編集注Gradleのビルドには影響しません。
ダイアログはSDKのへの一時的な調整のために使用することができますなど

なんか、いろいろやってるんですね、今は。
GUIから設定変更できてなかったんですね、今は。

で、そんな build.gradle 記述なメモをば。

続きを読む >>