如何解决在发布 apk
我想为我的应用程序构建发行版 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"
}
local.properties
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 sat 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。例外 sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est labum.
颤振版本 Flutter 1.22.6
提前致谢!
解决方法
找了 2 个小时后,我找到了解决方案。
这是因为在我的情况下是 flutter_downloader 包。
像这样在 main 中添加 try catch 块:
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()),),));
}
}
现在我只需要添加原生集成。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。