По мере того, как ваше приложение Flutter становится все сложнее и функциональнее, вы можете столкнуться с распространенной проблемой, известной как «ограничение метода 65 КБ» на Android. Это ограничение возникает из-за базового формата файла Dalvik Executable (DEX), который используется Android для упаковки и выполнения скомпилированного кода. Когда количество методов в вашем приложении превышает 64 КБ, вам необходимо включить multidex, чтобы обойти это ограничение. В этой статье блога мы рассмотрим шаги по включению мультидексации в вашем приложении Flutter и предоставим примеры кода, которые помогут вам в этом процессе.
Включение Multidex во Flutter:
Чтобы включить Multidex в приложении Flutter, выполните следующие действия:
Шаг 1. Добавьте зависимость multidex
В файле pubspec.yamlвашего проекта Flutter добавьте зависимость multidex в раздел dependencies:
dependencies:
flutter:
sdk: flutter
multidex: ^1.0.0
Шаг 2. Обновите файл android/app/build.gradle.
Откройте файл android/app/build.gradleв своем проекте Flutter и внесите следующие изменения:
android {
defaultConfig {
// ...
multiDexEnabled true
}
// ...
}
dependencies {
// ...
implementation 'androidx.multidex:multidex:2.0.1'
}
Шаг 3. Переопределите класс Application.
Создайте новый класс, назовем его MyApplication, который расширяет предоставленный класс FlutterApplication. от Флаттера. Переопределите метод attachBaseContextи вызовите MultiDex.install(this), чтобы включить мультидекс.
import androidx.multidex.MultiDex;
public class MyApplication extends FlutterApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Шаг 4. Обновите файл AndroidManifest.xml.
Откройте файл AndroidManifest.xmlв своем проекте Flutter и обновите элемент <application>, чтобы использовать ваш пользовательский класс MyApplication.
<application
android:name=".MyApplication"
<!-- ... -->
</application>
Пример кода:
Вот пример того, как вы можете реализовать мультидекс в своем приложении Flutter:
import 'package:flutter/material.dart';
import 'android/app/src/main/java/com/example/my_flutter_app/MyApplication.java';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My Flutter App',
home: Scaffold(
appBar: AppBar(
title: Text('Multidex Example'),
),
body: Center(
child: Text(
'Hello, Multidex!',
style: TextStyle(fontSize: 24),
),
),
),
);
}
}
Включение мультидексирования в вашем приложении Flutter позволяет преодолеть ограничение метода в 64 КБ, установленное Android. Выполнив действия, описанные в этой статье, и внеся необходимые изменения, вы можете быть уверены, что ваше приложение будет продолжать работать правильно по мере его усложнения. Не забудьте обновить зависимости, изменить файлы build.gradle и AndroidManifest.xml и переопределить класс Application. Включив мультидекс, вы можете уверенно расширять функциональность своего приложения, не беспокоясь об ограничениях методов.