我有一个运行良好的应用程序。现在,我需要添加Firestore功能,但无法构建。 控制台错误:
Launching lib\main.dart on Phone in debug mode...
Configuration 'compile' in project ':app' is deprecated. Use
'implementation' instead.
registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)
registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)
registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task
':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException:
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --
debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 2m 3s
Gradle build failed: 1
Exited (sigterm)
在 app / build.gradle
中添加行implementation 'com.google.firebase:firebase-firestore:17.1.0'
后出现错误
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-
core:3.0.1'
compile 'com.google.firebase:firebase-core:16.0.3'
implementation 'com.google.firebase:firebase-auth:16.0.3'
implementation 'com.google.firebase:firebase-firestore:17.1.0' //if I comment out this line the app compiles and builds normally.
//Also I can use FirebaseAuth in the app so I don't think I have wrongly configured Firebase
}
Gradlew日志
Task :app:compileDebugJavaWithJavac
Putting task artifact state for task ':app:compileDebugJavaWithJavac' into context took 0.0 secs.
file or directory 'C:\Users\rober\OneDrive\Documents\VS\appname\android\app\src\debug\java', not found
Skipping task ':app:compileDebugJavaWithJavac' as it is up-to-date (took 0.117 secs).
:app:compileDebugJavaWithJavac (Thread[Task worker for ':' Thread 3,5,main]) completed. Took 0.136 secs.
:app:transformClassesWithDexBuilderForDebug (Thread[Task worker for ':' Thread 3,5,main]) started.
> Task :app:transformClassesWithDexBuilderForDebug
Putting task artifact state for task ':app:transformClassesWithDexBuilderForDebug' into context took 0.0 secs.
Skipping task ':app:transformClassesWithDexBuilderForDebug' as it is up-to-date (took 0.162 secs).
:app:transformClassesWithDexBuilderForDebug (Thread[Task worker for ':' Thread 3,5,main]) completed. Took 0.162 secs.
:app:transformDexArchiveWithExternalLibsDexMergerForDebug (Thread[Daemon worker Thread 7,5,main]) started.
> Task :app:transformDexArchiveWithExternalLibsDexMergerForDebug
Putting task artifact state for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' into context took 0.0 secs.
Executing task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' (up-to-date check took 0.077 secs) due to:
Task has failed previously.
All input files are considered out-of-date for incremental task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
:app:transformDexArchiveWithExternalLibsDexMergerForDebug (Thread[Daemon worker Thread 7,5,main]) completed. Took 1.029 secs.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.
我什至尝试在Android Studio中运行它,但还是一无所获。添加其他依赖项,例如cloud storage
和cloud messaging
,应用程序将正常构建。但是在添加firestore
行之后,就会出现错误
答案 0 :(得分:2)
最后还是在Stackoverflow的另一篇文章中找到了答案 这些代码行应添加到build.gradle文件(模块:app)中。
private void alignTopRight(ImageView imageView)
{
imageView.setScaleType(ImageView.ScaleType.MATRIX); // !
final int drawableWidth = imageView.getDrawable().getIntrinsicWidth();
final int viewWidth = imageView.getWidth();
Matrix matrix = new Matrix();
matrix.postTranslate(viewWidth-drawableWidth, 0);
imageView.setImageMatrix(matrix);
}
private void alignBottomLeft(ImageView imageView)
{
imageView.setScaleType(ImageView.ScaleType.MATRIX); // !
final int drawableHeight = imageView.getDrawable().getIntrinsicHeight();
final int viewHeight = imageView.getHeight();
Matrix matrix = new Matrix();
matrix.postTranslate(0, viewHeight-drawableHeight);
imageView.setImageMatrix(matrix);
}