【问题标题】:When signing my flutter app i cannot build the app *edited*签署我的颤振应用程序时,我无法构建应用程序*已编辑*
【发布时间】:2019-11-25 18:57:30
【问题描述】:

所以我想将我的 Flutter 应用发布到 Play 商店。我签署了该应用程序,但之后该应用程序将无法构建。当我尝试通过 appbundle 构建我的应用程序时,它会返回:

C:\Users\tbsvst18tedbom\AndroidStudioProjects\tab_truth_true\tab>flutter build appbundle
Initializing gradle...                                              1,1s
Resolving dependencies...                                           5,6s
Running Gradle task 'bundleRelease'...
Running Gradle task 'bundleRelease'... Done                        11,9s
Gradle task bundleRelease failed with exit code 1

当我尝试通过胖 APK 构建应用程序时,我得到一个更长的错误,但仍然是一个谜:¨

C:\Users\tbsvst18tedbom\AndroidStudioProjects\tab_truth_true\tab>flutter build apk
You are building a fat APK that includes binaries for android-arm, android-arm64.
If you are deploying the app to the Play Store, it's recommended to use app bundles or split the APK to reduce the APK size.
    To generate an app bundle, run:
        flutter build appbundle --target-platform android-arm,android-arm64
        Learn more on: https://developer.android.com/guide/app-bundle
    To split the APKs per ABI, run:
        flutter build apk --target-platform android-arm,android-arm64 --split-per-abi
        Learn more on:  https://developer.android.com/studio/build/configure-apk-splits#configure-abi-split
Initializing gradle...                                              1,4s
Resolving dependencies...                                          23,0s
Note: C:\Users\tbsvst18tedbom\Desktop\Appen\Flutter\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_admob-0.9.0+9\android\src\main\java\io\flutter\plugins\firebaseadmob\AdRequestBuil
derFactory.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\tbsvst18tedbom\Desktop\Appen\Flutter\flutter\.pub-cache\hosted\pub.dartlang.org\url_launcher-5.2.5\android\src\main\java\io\flutter\plugins\urllauncher\WebViewActivity.jav
a uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Running Gradle task 'assembleRelease'...

Running Gradle task 'assembleRelease'... Done                     133,5s (!)
Gradle task assembleRelease failed with exit code 1

如果有帮助,我会添加应用级 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 FileNotFoundException()("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: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    signingConfigs {
        release {
            storeFile file('C:\\Users\\tbsvst18tedbom\\Desktop\\Appen\\KeyStore\\TABKEY.jks')
            storePassword '***'
            keyAlias = 'TABTRUTH1'
            keyPassword '***'
        }
    }
    compileSdkVersion 29

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        applicationId "com.tab.tab"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode = flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        signingConfig signingConfigs.release
    }

    buildTypes {
        release {
            multiDexEnabled true
            minifyEnabled false
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.pro'
        }
    }
}

    flutter {
        source '../..'
    }

    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.60"
        testImplementation 'junit:junit:4.13-rc-1'
        androidTestImplementation 'androidx.test:runner:1.3.0-alpha02'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha02'
        implementation 'com.google.firebase:firebase-ads:18.3.0'
        implementation 'com.google.firebase:firebase-appindexing:19.0.0'
        implementation 'com.google.android.gms:play-services-ads:18.3.0'
    }

apply plugin: 'com.google.gms.google-services'  // Google Play services Gradle plugin

我希望任何人都可以帮助我解决这个奇怪的错误消息。我不知道问题可能是什么,因为在我签署之前该应用程序构建良好。

如果您需要任何文件,只需说出这个词,我会编辑问题。

非常感谢!

编辑1 根据要求,这是 pubspec.yaml 文件

name: tab
description: TAB2

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
  url_launcher: ^5.0.0
  firebase_admob: ^0.9.0+9
  firebase_core: ^0.4.2
  firebase_analytics: ^5.0.6


dev_dependencies:
  flutter_launcher_icons: "^0.7.3"

  flutter_test:
    sdk: flutter

flutter_launcher_icons: "^0.7.3"

flutter_icons:
  android: true
  ios: true
  image_path: "Images/Logo_utan_text.png"

# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  assets:
    - Images/logotype.png
    - Images/Logo_utan_text.png

  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware.

  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages

经过进一步调查,我找到了它创建的构建。该文件夹包含所有信息,但没有 APK。我相信apk没有被签名所以它没有被创建?如果我错了,请纠正我。

谢谢!

EDIT3 当我运行 gradle sync 我得到这个 gradle 问题

INFO: API 'variantOutput.getProcessResources()' is obsolete and has been replaced with 'variantOutput.getProcessResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variantOutput.getProcessResources(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.
Affected Modules: app

有谁知道如何解决这个问题?

【问题讨论】:

  • 添加你的 pubspec.yaml
  • 我不使用windows所以我不确定,但是为什么你使用两个反斜杠来表示路径?我认为问题出在签名部分,所以这可能是原因。
  • @Ggriffo 我已经用 pubspec.yaml 文件更新了我的问题。我还将路径指示更改为正斜杠,但没有解决问题。
  • 在浏览您的 pub 文件后,一些 dep 需要一些配置,例如 pub.dev/packages/firebase_admob
  • 我查看了链接和我的 pubspec,但我不确定我需要做什么。据我所知,没有什么问题?

标签: android gradle flutter signing


【解决方案1】:

Flutter 在how to sign an app 上做了一个指南,它对我有用。你应该试一试。

【讨论】:

  • 我试过这个方法,但它也返回这个错误。
【解决方案2】:

选项 1:

Kotlin 编译器设置。

您可以在此处找到该设置:文件 -> 设置 -> Kotlin 编译器 -> 目标 JVM 版本

选项 2:

更新 Kotlin 插件

我可能是您的 IDE 具有较旧级别的 Kotlin 插件。

在 Android Studio 中,访问 File &gt; Settings... &gt; Kotlin 并检查以确保您的插件是最新的。您可能会看到这样的内容,表明您需要更新:

另外,如果您遇到内存问题,您可能需要将org.gradle.jvmargs=-Xms1024m -Xmx4096m 添加到gradle.properties 文件中。

【讨论】:

  • 我多次尝试这些方法,但构建仍然失败。
  • 我已经更新了这个问题,提供了更多关于第一次 gradle 同步时发生的错误的信息。我希望这会有所帮助
  • 请检查更新我的答案
  • 解决了,谢谢。但是,签名的 apk 仍然无法正常工作。是否与此 gradle 同步警告有任何关系 API 'variant.getMergeAssets()' 已过时并已替换为 'variant.getMergeAssetsProvider()'。 AND API 'variantOutput.getProcessResources()' 已过时,已替换为 'variantOutput.getProcessResourcesProvider()'。
  • 很高兴能帮上忙!快乐编码
【解决方案3】:

似乎我将 keyAlias 命名为错误,现在我已经更改了它。非常感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2021-01-05
    • 2021-08-09
    • 1970-01-01
    • 2021-01-23
    • 2021-05-06
    • 2020-11-28
    • 1970-01-01
    • 2020-05-11
    相关资源
    最近更新 更多