- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
今天我刚从 fabric crashlytics 迁移到 Firebase crashlytics。
minifyEnabled false 一切正常,但是当我更改 minifyEnabled true 时,我遇到了这个异常:
Circular dependency between the following tasks:
:app:checkManifestChangesDebug
\--- :app:instantRunMainApkResourcesDebug
\--- :app:transformClassesAndDexWithShrinkResForDebug
\--- :app:transformDexArchiveWithDexMergerForDebug
+--- :app:preColdswapDebug
| \--- :app:incrementalDebugTasks
| +--- :app:transformClassesAndClassesEnhancedWithInstantReloadDexForDebug
| | \--- :app:transformClassesWithInstantRunForDebug
| | \--- :app:checkManifestChangesDebug (*)
| \--- :app:transformClassesWithInstantRunForDebug (*)
\--- :app:transformClassesWithDexBuilderForDebug
+--- :app:preColdswapDebug (*)
\--- :app:transformClassesWithInstantRunForDebug (*)
(*) - details omitted (listed previously)
这里是项目级构建gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.butterknife_version = '8.8.1'
ext.supportLibVersion = '28.0.0'
ext.kotlin_version = '1.2.71'
ext.retrofit_version = '2.3.0'
ext.anko_version = '0.10.4'
ext.google_play_service_version = '16.0.0'
ext.firebase_messaging_version = '17.3.4'
repositories {
maven { url 'https://maven.google.com' }
jcenter()
google()
//for firebase crashlytics
maven {
url 'https://maven.fabric.io/public'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "com.jakewharton:butterknife-gradle-plugin:$butterknife_version"
classpath 'com.google.gms:google-services:4.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'io.fabric.tools:gradle:1.27.0'
}
}
allprojects {
repositories {
maven { url 'https://maven.google.com' }
jcenter()
maven {
url "https://github.com/omadahealth/omada-nexus/raw/master/release"
}
maven {
url 'https://maven.fabric.io/public'
}
maven { url "https://jitpack.io" }
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这里是模块构建gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.fabric'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.mta.mmp"
minSdkVersion 21
targetSdkVersion 28
versionCode 18
versionName "1.2.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
dexOptions {
javaMaxHeapSize "4g"
}
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField 'String', 'FirebaseTopicForPushNotification', "\"PROD_ANDROID_BROADCAST_MMP\""
}
dev {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField 'String', 'FirebaseTopicForPushNotification', "\"UAT_ANDROID_BROADCAST_MMP\""
}
debug {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField 'String', 'FirebaseTopicForPushNotification', "\"UAT_ANDROID_BROADCAST_MMP\""
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
configurations {
all*.exclude group: 'com.android.support', module: 'support-v13'
}
testImplementation 'junit:junit:4.12'
//kotlin
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.android.support:appcompat-v7:$supportLibVersion"
implementation "com.android.support:design:$supportLibVersion"
implementation "com.android.support:recyclerview-v7:$supportLibVersion"
implementation "com.android.support:cardview-v7:$supportLibVersion"
implementation "com.android.support:support-v4:$supportLibVersion"
//retrofit 2
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
//retrofit http interceptor
implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
//gson converter factory
implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
implementation 'com.google.code.gson:gson:2.8.2'
//RxAndroid
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
//picaso library
implementation 'com.squareup.picasso:picasso:2.5.2'
//form validation library
implementation 'com.mobsandgeeks:android-saripaar:2.0.3'
//font library
implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
//material dialog
implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
//joda time
implementation 'net.danlew:android.joda:2.9.4.3'
//circleimageview
implementation 'de.hdodenhof:circleimageview:2.2.0'
//recyclerview animation
implementation 'jp.wasabeef:recyclerview-animators:2.2.5'
//Butterknife
implementation "com.jakewharton:butterknife:$butterknife_version"
kapt "com.jakewharton:butterknife-compiler:$butterknife_version"
//rx runtime permissions
implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'
//rx binding
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
//pinlib
// compile project(':pinLib')
//circle indicator
implementation 'me.relex:circleindicator:1.2.2@aar'
//AndroidSlidingUpPanel
implementation 'com.sothree.slidinguppanel:library:3.3.1'
//toasty
implementation 'com.github.GrenderG:Toasty:1.2.5'
//for google map
implementation "com.google.android.gms:play-services-maps:$google_play_service_version"
//for location
implementation "com.google.android.gms:play-services-location:$google_play_service_version"
//Transitions Everywhere
implementation "com.andkulikov:transitionseverywhere:1.7.4"
//Android-Iconics
implementation "com.mikepenz:iconics-core:2.8.8@aar"
implementation "com.android.support:appcompat-v7:${supportLibVersion}"
implementation 'com.mikepenz:google-material-typeface:3.0.1.1.original@aar'
//Multidex
implementation 'com.android.support:multidex:1.0.3'
//for recyclerview swipe
implementation 'com.chauthai.swipereveallayout:swipe-reveal-layout:1.4.1'
//RippleView
implementation 'com.github.traex.rippleeffect:ripple:1.3.1-OG'
//TypefaceView
implementation 'com.github.omadahealth.typefaceview:typefaceview:1.5.0@aar'
//firebase Cloud Messaging
implementation "com.google.firebase:firebase-messaging:$firebase_messaging_version"
implementation 'com.google.firebase:firebase-core:16.0.6'
//qr scanner
implementation 'me.dm7.barcodescanner:zxing:1.9.4'
//MaterialDateTimePicker
implementation 'com.wdullaer:materialdatetimepicker:3.6.0'
implementation 'com.github.drawers:SpinnerDatePicker:1.0.6'
//anko
implementation "org.jetbrains.anko:anko:$anko_version"
// Anko Commons
implementation "org.jetbrains.anko:anko-commons:$anko_version"
//google maps utils
implementation 'com.google.maps.android:android-maps-utils:0.5+'
//crashlytics
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.7'
//kotpref
implementation "com.chibatching.kotpref:kotpref:2.4.0"
implementation "com.chibatching.kotpref:initializer:2.4.0" // optional
implementation "com.chibatching.kotpref:enum-support:2.4.0" // optional
implementation "com.chibatching.kotpref:gson-support:2.4.0" // optional
//rootbear
implementation 'com.scottyab:rootbeer-lib:0.0.6'
//autofittextview
implementation 'me.grantland:autofittextview:0.2.+'
//libphonenumber
implementation 'io.michaelrocks:libphonenumber-android:8.9.0'
//ksfmememory lib
//implementation(name: 'ksfmemoryidlib-release', ext: 'aar')
implementation 'org.apache.commons:commons-compress:1.15'
//rounded imageview
implementation 'com.makeramen:roundedimageview:2.3.0'
//Scaling layout
implementation 'com.github.iammert:ScalingLayout:1.2.1'
//Crisp MMP
implementation 'im.crisp:crisp-sdk:0.1.8'
//slider from daimajia
implementation 'com.daimajia.slider:library:1.1.5@aar'
implementation 'com.nineoldandroids:library:2.4.0'
implementation 'com.github.bumptech.glide:glide:4.8.0'
kapt 'com.github.bumptech.glide:compiler:4.8.0'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.+'
//Camera view
implementation 'com.otaliastudios:cameraview:1.5.1'
//Picasso2-okhttp3-downloader
implementation 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
//Restring 1.0
implementation 'com.ice.restring:restring:1.0.0'
}
repositories {
flatDir {
dirs 'libs'
}
}
apply plugin: 'com.google.gms.google-services'
crashlytics 的混淆器是
#PROGUARD RULE FOR FIREBASE CRASHLYTICS
#----------------------------------------------------------------------
# https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
# To let Crashlytics automatically upload the ProGuard or DexGuard mapping
file, remove this line from the config file
# -printmapping mapping.txt
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
最佳答案
根据我们的评论讨论,确保禁用 Instant Run 以立即修复解决方案!
关于android - 使用 firebase Crashlytics 时以下任务之间的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53722932/
我最近在/ drawable中添加了一些.gifs,以便可以将它们与按钮一起使用。这个工作正常(没有错误)。现在,当我重建/运行我的应用程序时,出现以下错误: Error: Gradle: Execu
Android 中有返回内部存储数据路径的方法吗? 我有 2 部 Android 智能手机(Samsung s2 和 s7 edge),我在其中安装了一个应用程序。我想使用位于这条路径中的 sqlit
这个问题在这里已经有了答案: What's the difference between "?android:" and "@android:" in an android layout xml f
我只想知道 android 开发手机、android 普通手机和 android root 手机之间的实际区别。 我们不能从实体店或除 android marketplace 以外的其他地方购买开发手
自Gradle更新以来,我正在努力使这个项目达到标准。这是一个团队项目,它使用的是android-apt插件。我已经进行了必要的语法更改(编译->实现和apt->注释处理器),但是编译器仍在告诉我存在
我是android和kotlin的新手,所以请原谅要解决的一个非常简单的问题! 我已经使用导航体系结构组件创建了一个基本应用程序,使用了底部的导航栏和三个导航选项。每个导航选项都指向一个专用片段,该片
我目前正在使用 Facebook official SDK for Android . 我现在正在使用高级示例应用程序,但我不知道如何让它获取应用程序墙/流/状态而不是登录的用户。 这可能吗?在那种情
我在下载文件时遇到问题, 我可以在模拟器中下载文件,但无法在手机上使用。我已经定义了上网和写入 SD 卡的权限。 我在服务器上有一个 doc 文件,如果用户单击下载。它下载文件。这在模拟器中工作正常但
这个问题在这里已经有了答案: What is the difference between gravity and layout_gravity in Android? (22 个答案) 关闭 9
任何人都可以告诉我什么是 android 缓存和应用程序缓存,因为当我们谈论缓存清理应用程序时,它的作用是,缓存清理概念是清理应用程序缓存还是像内存管理一样主存储、RAM、缓存是不同的并且据我所知,缓
假设应用程序 Foo 和 Eggs 在同一台 Android 设备上。任一应用程序都可以获取设备上所有应用程序的列表。一个应用程序是否有可能知道另一个应用程序是否已经运行以及运行了多长时间? 最佳答案
我有点困惑,我只看到了从 android 到 pc 或者从 android 到 pc 的例子。我需要制作一个从两部手机 (android) 连接的 android 应用程序进行视频聊天。我在想,我知道
用于使用 Android 以编程方式锁定屏幕。我从 Stackoverflow 之前关于此的问题中得到了一些好主意,并且我做得很好,但是当我运行该代码时,没有异常和错误。而且,屏幕没有锁定。请在这段代
文档说: android:layout_alignParentStart If true, makes the start edge of this view match the start edge
我不知道这两个属性和高度之间的区别。 以一个TextView为例,如果我将它的layout_width设置为wrap_content,并将它的width设置为50 dip,会发生什么情况? 最佳答案
这两个属性有什么关系?如果我有 android:noHistory="true",那么有 android:finishOnTaskLaunch="true" 有什么意义吗? 最佳答案 假设您的应用中有
我是新手,正在尝试理解以下 XML 代码: 查看 developer.android.com 上的文档,它说“starStyle”是 R.attr 中的常量, public static final
在下面的代码中,为什么当我设置时单选按钮的外观会发生变化 android:layout_width="fill_parent" 和 android:width="fill_parent" 我说的是
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
假设我有一个函数 fun myFunction(name:String, email:String){},当我调用这个函数时 myFunction('Ali', 'ali@test.com ') 如何
我是一名优秀的程序员,十分优秀!