新しいMultidexサポートライブラリを使用して、自分のアプリの1つのメソッド制限を超えたいと思います。
Android Lollipopにより、Googleはマルチデックスを容易にするマルチデックスサポートライブラリを発表しました。
このライブラリを使用してマルチデックスをサポートするアプリを構築するには、どのような手順が必要ですか?
編集:
Android 5.0(APIレベル21)以降では、マルチインデックスをネイティブでサポートするARTを使用しています。したがって、minSdkVersion
が21以上の場合、マルチインデックスサポートライブラリは必要ありません。
build.gradle
を修正してください。
Android {
compileSdkVersion 22
buildToolsVersion "23.0.0"
defaultConfig {
minSdkVersion 14 //lower than 14 doesn't support multidex
targetSdkVersion 22
// Enabling multidex support.
multiDexEnabled true
}
}
dependencies {
implementation 'com.Android.support:multidex:1.0.3'
}
単体テストを実行している場合は、これをApplication
クラスに含めます。
public class YouApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
あるいは単にapplication
クラスにMultiDexApplication
を拡張させる
public class Application extends MultiDexApplication {
}
詳細については、これ をお勧めします。
マルチデクシングを開始するには、次の手順が必要です。
プロジェクトにAndroid-support-multidex.jarを追加します。 jarはあなたのAndroid SDKフォルダー/ sdk/extras/Android/support/multidex/library/libsにあります。
これで、アプリケーションアプリケーションクラスにMultiDexApplicationを拡張させることができます。
public class MyApplication extends MultiDexApplication
または、次のようにattachBaseContextをオーバーライドします。
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
オーバーライドアプローチを使用したのは、アプリケーションクラスのクラス階層を混乱させることはないからです。
これでアプリはマルチデックスを使用する準備が整いました。次のステップは、gradleにマルチデクスapkの構築を説得することです。ビルドツールチームはこれをより簡単にするために取り組んでいますが、今のところあなたはあなたのアプリbuild.gradleのAndroid部分に以下を加える必要があります
dexOptions {
preDexLibraries = false
}
そして、あなたのアプリbuild.gradleの一般的な部分への次の
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = ['--multi-dex']
} else {
dx.additionalParameters += '--multi-dex'
}
}
}
より詳しい情報は Alex Lipovsのブログ にあります。
単純に、マルチインデックスを有効にするためには、あなたはする必要があります...
Android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.Android.support:multidex:1.0.0'
}
マニフェストファイルも変更する必要があります。マニフェストで、multidexサポートライブラリからMultiDexApplicationクラスを次のようにアプリケーション要素に追加します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.Android.multidex.myapplication">
<application
...
Android:name="Android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
あなたのbuild.gradleにこの依存関係を追加してください:
compile 'com.Android.support:multidex:1.0.1'
もう一度あなたのbuild.gradleファイルに次の行をdefaultConfigブロックに追加してください:
multiDexEnabled true
Applicationからアプリケーションクラスを拡張する代わりに、MultiDexApplicationから拡張します。好きです:
public class AppConfig extends MultiDexApplication {
今行ってもいいですよ!そしてあなたがそれを必要とするならば、すべてのMultiDexApplication
はします
public class MultiDexApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
ステップ1:build.gradeを変更する
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
}
dependencies {
...
compile 'com.Android.support:multidex:1.0.0'
}
ステップ2:Applicationクラスの設定
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
MultiDex.install(this);
}
}
ステップ3:grade.propertiesを変更する
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
それが動作します!。ありがとう。
まずProguardで試してみてください(これは未使用のすべてのコードを未使用)
Android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
プロジェクトでマルチデックスを有効にしたい場合は、gradle.builderにアクセスしてください。
そしてこれをあなたの扶養家族に追加してください
dependencies {
compile 'com.Android.support:multidex:1.0.0'}
それからあなたは追加しなければなりません
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true}
次に、クラスを開いてApplicationに拡張します。アプリケーションが使用するApplicationクラスを拡張する場合は、oncrete()メソッドをオーバーライドして呼び出すことができます
MultiDex.install(this)
マルチインデックスを有効にします。
そして最後にマニフェストに追加する
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.Android.multidex.myapplication">
<application
...
Android:name="Android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
AndroidManifest.xmlに追加します。
Android:name="Android.support.multidex.MultiDexApplication"
OR
MultiDex.install(this);
カスタムアプリケーションのattachBaseContextメソッド内
またはあなたのカスタムアプリケーションはMultiDexApplicationを拡張します
build.gradleにmultiDexEnabled = trueを追加します。
defaultConfig {
multiDexEnabled true
}
dependencies {
compile 'com.Android.support:multidex:1.0.0'
}
}
build.gradle
multiDexEnabled true
implementation 'androidx.multidex:multidex:2.0.1'
AndroidManifest.xml
<application
Android:name="androidx.multidex.MultiDexApplication"