I can not find the origin of this error when I compile in release mode. I have the impression that this error appeared without modifying my code (I try to go back with github but I still have this error).
Error:Execution failed for task ':app:transformClassesWithFirebasePerformancePluginForRelease'.
java.io.IOException: The specified path was not found
Gradle with debug flag
22:36:11.767 [ERROR] [FirebasePerformancePlugin] Can't instrument org/apache/xmlbeans/impl/schema/SchemaTypeSystemCompiler.class
My build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
maven {
url 'https://maven.google.com'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.google.gms:google-services:3.1.0'
classpath 'com.google.firebase:firebase-plugins:1.1.0'
classpath 'io.fabric.tools:gradle:1.+'
}
}
allprojects {
repositories {
jcenter()
maven {
url 'http://www.idescout.com/maven/repo/'
}
maven {
url 'https://maven.google.com'
}
}
}
My app/build.gradle
apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'io.fabric'
android {
compileSdkVersion 26
buildToolsVersion '26.0.0'
defaultConfig {
applicationId ""
minSdkVersion 16
targetSdkVersion 26
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
signingConfig signingConfigs.Keys
}
debug {
signingConfig signingConfigs.Keys
}
}
dexOptions {
jumboMode = true
}
packagingOptions {
pickFirst 'META-INF/*'
}
}
repositories {
jcenter()
}
repositories {
maven { url "http://repo1.maven.org/maven2" }
maven { url 'https://jitpack.io' }
maven { url 'https://maven.fabric.io/public' }
}
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:26.0.0-beta2'
compile 'com.android.support:support-v13:26.0.0-beta2'
compile 'com.android.support:support-v4:26.0.0-beta2'
compile 'com.android.support:design:26.0.0-beta2'
compile 'com.android.support:recyclerview-v7:26.0.0-beta2'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:cardview-v7:26.0.0-beta2'
compile 'com.android.support:customtabs:26.0.0-beta2'
//firebase
compile 'com.google.firebase:firebase-ads:11.0.2'
compile 'com.google.firebase:firebase-core:11.0.2'
compile 'com.google.firebase:firebase-messaging:11.0.2'
compile 'com.google.firebase:firebase-auth:11.0.2'
compile 'com.google.firebase:firebase-database:11.0.2'
compile 'com.google.firebase:firebase-config:11.0.2'
compile 'com.google.firebase:firebase-storage:11.0.2'
compile 'com.google.firebase:firebase-perf:11.0.2'
compile 'com.firebaseui:firebase-ui-auth:1.2.0'
//Fabric
compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true;
}
compile 'com.android.support:support-vector-drawable:26.0.0-beta2'
compile 'commons-io:commons-io:2.5'
compile 'com.android.support:multidex:1.0.1'
compile files('libs/aa-poi-ooxml-schemas-3.10-reduced-more-0.1.5.jar')
compile files('libs/aa-poi-3.10-min-0.1.5.jar')
}
apply plugin: 'com.google.gms.google-services'
After migrating my Android project to Gradle Kotlin DSL I suddenly also receive the Can't instrument
error by the Firebase Performance Plugin for any class of the project, including third-party dependencies. The build eventually aborts with an OutOfMemoryError
. The error is
Can't instrument: ...
java.lang.IllegalArgumentException
at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:79)
at com.google.firebase.perf.plugin.instrumentation.InstrumentationVisitor.<init>(InstrumentationVisitor.java:55)
...
Looking at the source code of ASM's ClassVisitor I see that IllegalArgumentException
is thrown in the constructor when an unhandled api version is passed. perf-plugin requires version 7.0 of ASM. However when checking the project dependencies with ./gradlew :app:dependencies
I find out that version 6.0 of ASM is used. Obviously some other dependency requires 6.0.
I tried to explicitly overwrite the ASM dependency with
configurations.all {
resolutionStrategy.eachDependency {
if (requested.group == "org.ow2.asm") {
useVersion("7.0")
because("Version required by Firebase Performance Plugin")
}
}
}
and in the output of ./gradlew :app:dependencies
I now see that 7.0 is used but I still receive this error :(
Update: Downgrading com.google.firebase:firebase-plugins
from 1.2.0
to 1.1.5
solves the problem for me.
Update 2: As of version 2.0.0 of firebase-plugins
its usage is deprecated. The recommended solution is now to use the Performance Monitoring plugin explicitly. After migrating to the new plugin the problem is now solved for me.
Update 3: I must withdraw my previous statement. Using the Performance Monitor plugin did fix the build on my local machine but not on my Jenkins build server. Also moving the configurations.all
block mentioned above into the buildscript
block as commented by Antimonit did not fix the build, although I can see in the output of ./gradlew buildEnvironment
that ASM 7.0 is used for the build.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With