Flutter – популярный фреймворк для разработки кроссплатформенных мобильных приложений. Он предоставляет различные пакеты, упрощающие процесс разработки. Одним из таких пакетов является package_info, который позволяет получать информацию о приложении, например номер версии и номер сборки. Однако иногда разработчики сталкиваются с проблемами, когда номер сборки не извлекается правильно. В этой статье мы рассмотрим несколько способов устранения и решения этой проблемы.
Метод 1: проверьте зависимости пакета.
Сначала убедитесь, что вы добавили зависимость package_infoв файл pubspec.yamlвашего проекта. Откройте файл и убедитесь, что он содержит следующую строку в разделе dependencies:
dependencies:
flutter:
sdk: flutter
package_info: ^2.0.0 // or the latest version
Сохраните файл и запустите flutter pub get, чтобы получить пакет. Этот шаг гарантирует, что пакет правильно установлен и доступен в вашем проекте.
Метод 2: проверка разрешений
Пакету package_infoтребуются определенные разрешения для доступа к необходимой информации. Убедитесь, что вы добавили необходимые разрешения к файлам AndroidManifest.xmlи Info.plistвашего приложения для Android и iOS соответственно. Требуемые разрешения должны выглядеть следующим образом:
Android:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
iOS:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Метод 3: обработка кода, специфичного для платформы
Пакет package_infoиспользует код, специфичный для платформы, для получения номера сборки. Убедитесь, что вы внедрили необходимый код для конкретной платформы для Android и iOS.
Android:
В проекте Flutter перейдите к android/app/src/main/kotlin/и откройте файл MainActivity.kt. Добавьте следующий фрагмент кода:
import android.os.Build
import android.os.Bundle
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity : FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(FlutterEngine(this))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
getFlutterEngine()?.getPlugins()?.add(io.flutter.plugins.packageinfo.PackageInfoPlugin())
}
}
}
iOS:
В проекте Flutter перейдите к ios/Runnerи откройте файл AppDelegate.swift. Добавьте следующий фрагмент кода:
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
}
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
Метод 4: очистка и перестройка
Если описанные выше методы не решили проблему, возможно, возникла проблема с кэшированием. Попробуйте очистить и пересобрать проект Flutter. Используйте следующие команды в терминале или командной строке:
flutter clean
flutter pub get
flutter build <platform>
Замените <platform>на apkдля Android или на iosдля iOS.
Пакет package_infoво Flutter предоставляет удобный способ получения информации о приложении, например номера сборки. Если вы столкнулись с проблемами, связанными с неправильным получением номера сборки, следуйте методам устранения неполадок, описанным в этой статье. Проверяя зависимости пакетов, проверяя разрешения, обрабатывая код, специфичный для платформы, и выполняя чистую перестройку, вы можете преодолеть эти препятствия и успешно получить номер сборки в своем приложении Flutter.