react native android 64k method limit

1

When making the build to my application I get these errors:

Error:The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at 
https://developer.android.com/tools/building/multidex.html
Error:com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 
65536

and several more, according to investigate this error is because the limit of methods was passed, and try to enable the multidex but I still get the same error, in fact and remove all dependencies and follow the same error.  This is my build.gradle with only a few dependencies

buildscript {
 repositories {
  maven { url 'https://maven.fabric.io/public' }
  mavenCentral()
}

 dependencies {
  classpath 'io.fabric.tools:gradle:1.+'
  classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.4'
}
 }
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.getkeepsafe.dexcount'


repositories {
maven { url 'https://maven.fabric.io/public' }
}

android {
 flavorDimensions "default"
 compileSdkVersion 26
 buildToolsVersion '26.0.2'

 defaultConfig {

applicationId 'com.sitiorandom.muyanda'
minSdkVersion 19
targetSdkVersion 26
versionCode 2
versionName '0.1.1'
ndk {
  abiFilters 'armeabi-v7a', 'x86'
}

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// Deprecated. Used by net.openid:appauth
manifestPlaceholders = [
  'appAuthRedirectScheme': 'host.exp.exponent'
]
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize System.getenv("DISABLE_DEX_MAX_HEAP") ? null : "8g"
}
productFlavors {
// Define separate dev and prod product flavors.
dev {
  // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
  // to pre-dex each module and produce an APK that can be tested on
  // Android Lollipop without time consuming dex merging processes.
  minSdkVersion 19
}
devRemoteKernel {
  minSdkVersion 19
}
dev19 {
  // For debugging / development on older SDK versions. Increases build
  // time so use 'dev' if not running on older SDKs.
  minSdkVersion 19
}
prod {
  // The actual minSdkVersion for the application.
  minSdkVersion 19
}
  } 
  buildTypes {
debug {
  debuggable true


}
release {
  minifyEnabled true
  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  zipAlignEnabled true

}
  }
  signingConfigs {
debug {
  storeFile file('../debug.keystore')
}
 }
  lintOptions {
abortOnError false
  }  
  packagingOptions {
pickFirst "**"
  } 
 }

// Don't use modern jsc-android since it still has some critical bugs that
// crash applications when the string for the JS bundle is loaded and when
// locale-specific date functions are called.
// configurations.all {
//   resolutionStrategy {
//     force 'org.webkit:android-jsc:r216113'
//   }
// }


apply from: 'expo.gradle'


dependencies {
  implementation('commons-validator:commons-validator:1.4.1') {
exclude group: 'commons-collections', module: 'commons-collections'
  }
  compile 'com.android.support:multidex:1.0.3'
  annotationProcessor 'com.jakewharton:butterknife:7.0.1'
  compile 'com.jakewharton:butterknife:7.0.1'
  compile fileTree(dir: 'libs', include: ['*.jar'])



  // Our dependencies

  //compile 'com.android.support:appcompat-v7:26.0.1'

  // Our dependencies from ExpoView
  // DON'T ADD ANYTHING HERE THAT ISN'T IN EXPOVIEW. ONLY COPY THINGS FROM 
   EXPOVIEW TO HERE.
  //compile 'com.android.support:appcompat-v7:26.0.1'
  /*compile 'com.facebook.android:facebook-android-sdk:4.7.0'
  compile('com.facebook.android:audience-network-sdk:4.22.1') {
  exclude module: 'play-services-ads'
  }
  provided 'org.glassfish:javax.annotation:3.1.1'
  compile 'com.jakewharton:butterknife:7.0.1'
  compile 'de.greenrobot:eventbus:2.4.0'
  compile 'com.amplitude:android-sdk:2.9.2' // Be careful when upgrading! 
  Upgrading might break experience scoping. Check with Jesse. See 
  Analytics.resetAmplitudeDatabaseHelper
  compile 'com.squareup.picasso:picasso:2.5.2'

  compile 'com.google.android.gms:play-services-maps:9.8.0'


  compile "com.raizlabs.android:DBFlow-Core:2.2.1"
  compile "com.raizlabs.android:DBFlow:2.2.1"
  compile "com.madgag.spongycastle:core:1.53.0.0"
  compile "com.madgag.spongycastle:prov:1.53.0.0"
  debugCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
  // debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta1'
  releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4- 
  beta1'
  compile 'com.facebook.device.yearclass:yearclass:1.0.1'
  compile 'commons-io:commons-io:1.3.2'
  compile 'me.leolin:ShortcutBadger:1.1.4@aar'
  compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
  compile 'com.theartofdev.edmodo:android-image-cropper:2.4.7'
  compile 'com.yqritc:android-scalablevideoview:1.0.1'
  compile 'commons-codec:commons-codec:1.10'
  compile 'com.segment.analytics.android:analytics:4.3.0'
  compile 'com.google.zxing:core:3.2.1'
  compile 'net.openid:appauth:0.4.1'
  compile 'com.airbnb.android:lottie:2.2.0'
  compile 'io.branch.sdk.android:library:2.6.1'
  compile('io.nlopez.smartlocation:library:3.2.11') {
   transitive = false
  }
  compile 'com.android.support:exifinterface:26.0.1'
  compile 'com.squareup.okhttp3:okhttp:3.4.1'
  compile 'com.squareup.okhttp3:okhttp-urlconnection:3.4.1'
  compile 'com.squareup.okhttp3:okhttp-ws:3.4.1'
  compile 'com.squareup.okio:okio:1.9.0'

  // Testing
  androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.1'
  // We use a modified build of com.android.support.test:runner:1.0.1. 
  Explanation in maven-test/README
  androidTestCompile 'com.android.support.test:runner:1.0.1'
  androidTestCompile 'com.android.support:support-annotations:26.0.1'
  androidTestCompile 'com.google.code.findbugs:jsr305:3.0.0'
  androidTestCompile 'com.android.support.test.uiautomator:uiautomator- 
  v18:2.1.1'
  androidTestCompile 'com.azimolabs.conditionwatcher:conditionwatcher:0.2'

  */
  compile 'com.google.android.gms:play-services-maps:9.8.0'

  compile('host.exp.exponent:expoview:27.0.0@aar') {
  transitive = true
  }

  //compile('host.exp.exponent:expoview:27.0.0@aar')
  }

 // This has to be down here for some reason
 apply plugin: 'com.google.gms.google-services'

And the mainApplication

package host.exp.exponent;

import android.content.Context;
import android.support.multidex.MultiDex;

import com.facebook.react.ReactPackage;

import java.util.Arrays;
import java.util.List;

import expolib_v1.okhttp3.OkHttpClient;

// Needed for 'react-native link'
// import com.facebook.react.ReactApplication;

public class MainApplication extends ExpoApplication {

@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}

public boolean isDebug() {
return BuildConfig.DEBUG;
}

// Needed for 'react-native link'
public List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
    // Add your own packages here!
    // TODO: add native modules!

    // Needed for 'react-native link'
    // new MainReactPackage()
);
}

@Override
public String gcmSenderId() {
return getString(R.string.gcm_defaultSenderId);
}

@Override
public boolean shouldUseInternetKernel() {
return BuildVariantConstants.USE_INTERNET_KERNEL;
}

public static OkHttpClient.Builder okHttpClientBuilder(OkHttpClient.Builder 
 builder) {
// Customize/override OkHttp client here
return builder;
}
}
    
asked by RereRoro1 21.11.2018 в 06:21
source

1 answer

0

In this case, the message indicates the problem:

  

Error: The number of method references in a .dex file can not exceed   64K.

Review the related information in Configure apps with methods over 64K

To use the multidex configuration you must define within the defaultConfig block and add its dependency:

android {
    defaultConfig {
        ...
        minSdkVersion 19
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}


   dependencies {
     compile 'com.android.support:multidex:1.0.3'
   }

define it below targetSdkVersion , you must ensure there is no error and correctly synchronize your file build.gradle with the project.

    
answered by 21.11.2018 в 16:42