我正在使用 Flutter 应用。我可以在android设备上成功运行应用程序,但是尝试制作build _( .apk )_文件并遇到以下问题。
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':flutter_twitter:verifyReleaseResources'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > Android resource linking failed /Users/ipatel/.gradle/caches/transforms-2/files-2.1/8f09fa5c6115de167b21b323f769edd9/core-1.0.0/res/values/values.xml:57:5-88:25: AAPT: error: resource android:attr/fontVariationSettings not found. /Users/ipatel/.gradle/caches/transforms-2/files-2.1/8f09fa5c6115de167b21b323f769edd9/core-1.0.0/res/values/values.xml:57:5-88:25: AAPT: error: resource android:attr/ttcIndex not found. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 5m 2s Running Gradle task 'assembleRelease'... Running Gradle task 'assembleRelease'... Done 303.8s (!) The built failed likely due to AndroidX incompatibilities in a plugin. The tool is about to try using Jetfier to solve the incompatibility. Building plugin firebase_messaging... The plugin firebase_messaging could not be built due to the issue above.
以下是项目的资料
defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.xxxx.eeee" minSdkVersion 21 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' } > local.properties sdk.dir=/Users/ipatel/Library/Android/sdk flutter.sdk=/Users/ipatel/Documents/Amit/FlutterSetup/flutter flutter.buildMode=release flutter.versionName=1.0.0 flutter.ver
我的应用程序与 AndroidX 兼容,还尝试了许多解决方案,但无法解决我的问题。
我查 - https://github.com/roughike/flutter_twitter_login/issues/29 -
- 扑错误“Android的依赖‘androidx.core:核心’有不同版本”使用flutter_local_notifications和位置包
和别的。
Flutter Doctor结果:
Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel beta, v1.12.13+hotfix.6, on Mac OS X 10.14.3 18D109, locale en-IN) [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2) [✓] Xcode - develop for iOS and macOS (Xcode 10.3) [✓] Chrome - develop for the web [✓] Android Studio (version 3.5) [✓] VS Code (version 1.41.1) [✓] Connected device (4 available)
build.gradle
android { compileSdkVersion 28 sourceSets { main.java.srcDirs += 'src/main/kotlin' } lintOptions { disable 'InvalidPackage' } defaultConfig { applicationId "com.xxxx.aaaa" minSdkVersion 21 targetSdkVersion 28 multiDexEnabled true versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } 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 } } }
gradle.properties
org.gradle.jvmargs=-Xmx1536M android.enableR8=true android.useAndroidX=true android.enableJetifier=true
〜PS:让我知道您是否需要我的更多细节。
问题是某些库不兼容,或者某些库不使用androidx。多亏了google将所有支持库转移到androidx上,现在许多库都发生了这样的冲突,我主要去调试哪个库存在问题,例如从pubspec注释和取消注释库。
假设是flutter_twitter插件是问题所在。
正如我们可以检查的那样,该twitter插件未使用AndroidX 链接,因此我们需要自行更改它。 (所有这些更改都需要在Twitter插件中进行更改,而不是在Flutter项目中进行更改)
正如我们可以检查的那样,该twitter插件未使用AndroidX 链接,因此我们需要自行更改它。
(所有这些更改都需要在Twitter插件中进行更改,而不是在Flutter项目中进行更改)
我认为您可以将gradle.properties更改为使用androidx,还可以将版本编译为28 gradle.properties:
android.useAndroidX=true android.enableJetifier=true
添加这两行,更改gradle类路径, classpath 'com.android.tools.build:gradle:3.5.3' 并compileSdkVersion 28在flutter_twitter中。我能够使用该插件生成发布版本。
classpath 'com.android.tools.build:gradle:3.5.3'
compileSdkVersion 28
哦,/Users/parth.dave/.pub- cache/hosted/pub.dartlang.org/flutter_twitter_login-1.1.0/是的,您可以在类似的地方找到插件的缓存版本,在此可以对其进行更新。或在androidstudio和studio中打开android文件夹,将向您显示两个项目app和twitter,您可以在其中更新此内容。
/Users/parth.dave/.pub- cache/hosted/pub.dartlang.org/flutter_twitter_login-1.1.0/
有时最好在android studio中打开android项目并更新所有可能会出错的东西,然后再运行flutter项目。