アンドロイドコードはdexというファイルにコンパイルになります。 dexは65,535個のメソッドだけコンパイルがされます。 これを超過するアプリを作成すると、MultiDexに設定してApkファイルにdexが二つ以上でコンパイルされるようにする必要があります。
AndroidXを使用するときにアプリをMultiDexに設定する方法を紹介します。
Gradle設定
まず、Appの build.gradle
ファイルに次のように"multiDexEnabled true"
に設定して、ライブラリを依存関係を追加します。
defaultConfig {
multiDexEnabled true
}
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
....
}
アプリのコードを設定
マルチデックスを使用するには、AndroidManifestにApplicationをMultiDexApplicationのクラスに指定する必要があります。
Applicationクラスを別に作らないとき
"AndroidManifest.xml"
に次のように名前を設定してくれればされます。
<application
android:name="androidx.multidex.MultiDexApplication" ... >
...
Custom Applicationクラスを作成するときに
次のようにApplicationクラスを個別に作成することができます。
public class MyApplication extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
}
}
このような場合には、 "AndroidManifest.xml"
に実装したApplicationオブジェクトの名前を設定してくれればされます。
<application
android:name=".MyApplication" ... >
...
もしApplicationは上書きが MultiDexApplication
を継承していない場合には、
次のように MultiDex.install(this)
を呼び出してMultiDexを使用するようにすることができます。
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Proguardなどで最適化を行う際に注意しなければなら点はAndroid Developerを参照してください。
参考
Related Posts
- Android - 振動、Vibrator、VibrationEffectの例
- Android - TabLayoutの実装方法(+ ViewPager2)
- Android - PackageManagerにPackage情報を取得する
- Android - ACTION_BOOT_COMPLETEDイベント受信
- Android - FusedLocationProviderClientに位置情報を取得する
- Android - GPS、Network位置情報を取得する(LocationManager)
- Android - Foreground Service実行
- Android - 時間、日付、変更イベント受信
- Android - currentTimeMillis()、elapsedRealtime()、uptimeMillis()
- Android-PowerManager WakeLock
- Android - ファイル入出力の例(Read、Write、内部、外部ストレージ)
- Android - Screen On / Offイベントの受信、状態確認
- Android - 他のアプリのServiceにバインド
- Android - Handler vs Executor
- Android - Darkmode有効にする方法
- Android - hasSystemFeature()、サポートされているFeature確認
- Android - アプリの権限を確認(Permission check)
- Android - インストールされてアプリリストをインポートする
- Android App Shortcuts実装
- Android - ContentProviderを実装、および例
- Android - AIDLを利用して、Remote Serviceの実装
- Android - Uri、Scheme、SSP(Scheme Specific Part)説明
- Android - アプリのインストール、削除、イベントダウンロード(BroadcastReceiverインテントを受け取る)
- Android - SharedPreferencesに簡単なデータを保存する方法
- Android - AlarmManagerにアラームを登録する方法、および例
- Android - Quick SettingsにCustom Tile追加する方法(kotlin)
- Android - Broadcast Receiver登録およびイベントの受信方法
- Android - Runtime permissionリクエスト方法と例(kotlin)
- Android - ネットワーク(WIFI)の接続状態を確認し、変更の検出
- Mockito - static、final methodをmockingする方法
- Andriod - カスタムパーミッションを定義する方法
- RobolectricにUnit Testを作成する(kotlin)
- Android Mockitoのテストコードを作成する(kotlin)
- Android - Handlerの使用方法、および例
- Android - IntentService使用方法
- Android - JobIntentService使用方法