flutter - 在发布 apk 中只能看到 Flutter 灰屏
问题描述
我想为我的应用程序构建发布 apk,并尝试运行此命令
flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi
然后,我运行了 app-armeabi-v7a-release apk,它只是灰屏而已。
我还启用了清单中的所有权限
<uses-permission android:name="android.permission.INTERNET"/>
日志
WARNING: [Processor] Library 'C:\Users\sanje\.gradle\caches\modules-2\files-2.1\org.robolectric\shadows-framework\4.3\150103d5732c432906f6130b734e7452855dd67b\shadows-framework-4.3.jar' contains references to both AndroidX and old support library. This seems like the library is partially migrated. Jetifier will try to rewrite the library anyway.
Example of androidX reference: 'androidx/test/runner/lifecycle/Stage'
Example of support library reference: 'android/support/annotation/NonNull'
Running Gradle task 'assembleRelease'...
Running Gradle task 'assembleRelease'... Done 107.2s
√ Built build\app\outputs\flutter-apk\app-armeabi-v7a-release.apk (15.8MB).
android/app/build.gradle
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 30
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.maslow.learnwithyoutube_flutterapp"
minSdkVersion 21
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
implementation platform('com.google.firebase:firebase-bom:26.5.0')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
本地属性
sdk.dir=C:\\Users\\sanje\\AppData\\Local\\Android\\Sdk
flutter.sdk=C:\\flutter
flutter.buildMode=release
flutter.versionName=1.0.0
flutter.versionCode=1
忽略这个:Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。Exceptioneur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labourum。
颤振版本Flutter 1.22.6
提前致谢!
解决方案
找了2个小时后,我找到了解决方案。
在我的情况下,这是因为 flutter_downloader 包。
在 main 中添加 try catch bloc,如下所示:
void main() async {
try {
WidgetsFlutterBinding.ensureInitialized();
await FlutterDownloader.initialize(
debug: true // optional: set false to disable printing logs to console
);
await Firebase.initializeApp();
final Directory directory =
await path_provider.getApplicationDocumentsDirectory();
Hive.init(directory.path);
Hive.registerAdapter(ResponseTokenModelAdapter());
await Hive.openBox<ResponseTokenModel>(HiveBoxNames.token);
configureInjection(Environment.prod);
runApp(AppWidget());
} catch (e) {
runApp(MaterialApp(
home: Center(
child: Text(e.toString()),
),
));
}
}
现在我只需要添加原生集成。
推荐阅读
- excel - 将范围粘贴为图片时出现 Outlook 图像错误
- snowflake-cloud-data-platform - 使用传递的变量插入表雪花
- python - Python(几乎没问题):字符串拆分器
- c# - 函数只返回输入变量的第一个值
- java - InputStream 读取“合理”长度的文本,避免阻塞
- java - 如何从模型对象访问特定的字段列表
- java - 如何使用 Java 将 base 64 图像插入 BLOB 列?(甲骨文)
- arrays - Chart.js 将标签和数据的每个字母显示为图表上的单个值。提供的数据和标签是数组
- python - 如何在不使用循环的情况下增加字典中的值?
- python - 对 Pandas DF 的多个 SQL 查询并行