LoginSignup
0
0

More than 5 years have passed since last update.

Multidex サポートと minSdkVersion の関係

Last updated at Posted at 2016-12-08

Multidex について細かい説明はしませんので Android Developer を参照のこと。日本語版は内容がちょっと古いので英語版を読んでください。

Multidex についてググると、上記説明をもとに書かれたと思わしき記事がたくさんヒットしますが、minSdkVersion との関係について書かれている記事があまり見られません。しかし、自分がとある問題にピンポイントでハマったので、そのへんを記録として残しておきます。

説明では、minSdkVersion が 20 以下の時は下記を指定せよと書いてあるのですが、

build.gradle
dependencies {
  compile 'com.android.support:multidex:1.0.1'
}

実は最近の Android Gradle Plugin では、この依存関係を勝手に解決してしまいます。

VariantManager.java

VariantManager.java
public class VariantManager implements VariantModel {
    protected static final String COM_ANDROID_SUPPORT_MULTIDEX =
            "com.android.support:multidex:1.0.1";
//
// 中略
//

if (variantConfig.isMultiDexEnabled() && variantConfig.isLegacyMultiDexMode()) {
           project.getDependencies().add(
                   variantDep.getCompileConfiguration().getName(), COM_ANDROID_SUPPORT_MULTIDEX);
           project.getDependencies().add(
                   variantDep.getPackageConfiguration().getName(), COM_ANDROID_SUPPORT_MULTIDEX);
}

isLegacyMultiDexMode() とは何ぞや?と調べると

VariantConfigration.java
public boolean isLegacyMultiDexMode() {
    return isMultiDexEnabled() && getMinSdkVersion().getApiLevel() < 21;
}

となっていました。つまり、minSdkVersion が 20 以下の時に、multiDexEnabled true とすると、com.android.support:multidex:1.0.1 の依存関係が勝手に解決される、ということです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0