回答:
編集:
Android 5.0(APIレベル21)以降では、マルチデキシングをサポートするARTを使用します。したがって、minSdkVersion
21以上の場合、multidexサポートライブラリは必要ありません。
あなたの修正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 {
}
gradle-wrapper.properties
)重要なポイント:1 buildToolsVersionは21.1.1以降である必要があります。 2multiDexEnabled true
build.gradleのdefaultConfigに追加します(aがないことに注意してください=
)3'com.android.support:multidex:1.0.0'
android:name="android.support.multidex.MultiDexApplication"
への追加application
はAndroidManifest.xml
十分ですか?
..if your minSdkVersion is set to 20 or lower you must use...
'compile 'com.android.support:multidex:1.0.1'
。
マルチデクシングを開始するには、次の手順が必要です。
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);
}
オーバーライドアプローチを使用したのは、それがアプリケーションクラスのクラス階層に影響しないためです。
これで、アプリでマルチdexを使用する準備ができました。次のステップは、gradleにマルチdexの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ブログをご覧ください。
簡単に言うと、multidexを有効にするには、次のことが必要です...
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'
}
また、マニフェストファイルを変更する必要があります。マニフェストで、multiDexApplicationクラスをmultidexサポートライブラリから次のようにアプリケーション要素に追加します
<?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>
android:name="android.support.multidex.MultiDexApplication
くださいとは思いません..
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);
}
}
build.gradle
multiDexEnabled true
implementation 'androidx.multidex:multidex:2.0.1'
AndroidManifest.xml
<application
android:name="androidx.multidex.MultiDexApplication"
ステップ1: build.gradeを変更する
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
}
dependencies {
...
compile 'com.android.support:multidex:1.0.0'
}
ステップ2:アプリケーションクラスの設定
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
それが動作します!。ありがとう。
Android Xでの2020年5月の最新のアプローチを以下に示します。
minSdk
> = 21何もする必要はありません。これらのデバイスはすべて、multidexをネイティブでサポートするAndroid RunTime(ART)VMを使用します。
minSdk
21 <あなたには、モジュールレベルのbuild.gradle
、以下の構成が装着されていることを確認してください。
android {
defaultConfig {
multiDexEnabled true
}
}
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
}
次に、あなたのsrc/main/AndroidManifest.xml
ニーズを宣言するMultiDexApplication
とapplication:name
:
<manifest package="com.your.package"
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:name="androidx.multidex.MultiDexApplication" />
</manifest>
AndroidManifest.xmlに追加:
android:name="android.support.multidex.MultiDexApplication"
または
MultiDex.install(this);
カスタムアプリケーションのattachBaseContextメソッド内
またはあなたのカスタムアプリケーションはMultiDexApplicationを拡張します
build.gradleにmultiDexEnabled = trueを追加します
defaultConfig {
multiDexEnabled true
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
}
まず、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'
}
}
}
プロジェクトでmulti-dexを有効にする場合は、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)
multidexを有効にします。
最後にマニフェストに追加します
<?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>
gradle.builder
?
上記のすべての答えは素晴らしいです
また、これを追加しないと、アプリは理由もなく私のようにクラッシュします
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
androidxでは、クラシックサポートライブラリは機能しなくなりました。
簡単な解決策は、次のコードを使用することです
あなたのbuild.gradle
ファイル
android{
...
...
defaultConfig {
...
...
multiDexEnabled true
}
...
}
dependencies {
...
...
implementation 'androidx.multidex:multidex:2.0.1'
}
そしてマニフェストで、アプリケーションタグに名前属性を追加するだけです
<manifest ...>
<application
android:name="androidx.multidex.MultiDexApplication"
...
...>
...
...
</application>
</manifest>
アプリケーションがAPI 21以上をターゲットにしている場合、multidexはデフォルトで有効になっています。
ここで、multidexをサポートしようとして直面する多くの問題を取り除きたい場合は、まず設定によるコード圧縮を使用してみてくださいminifyEnabled true
。