Intereting Posts
Как остановить изменение ориентации, когда индикатор прогресса вращается в андроиде Общая анимация элементов между элементом RecyclerView и CollapsingToolbar в пределах одной активности Как создать прозрачную активность на Android? Остановить Android Studio от методов и конструкторов упаковки Как выйти из цикла while через определенное время? Отображение вертикальной полосы прокрутки SearchView удаляет синюю линию фокусировки и показывает курсор в определенном положении ViewPager.setOffscreenPageLimit (0) не работает должным образом Свертывание панели инструментов, как Google Play Store Идентификатор ресурса не найден для атрибута paddingEnd в пакете 'android' Android – Activity Constructor vs onCreate Facebook SDK импортировать в Android Studio и добавить его в мое приложение Есть ли способ заставить EditText начать печатать в верхнем левом углу EditText? Android: получите ответ от https-url Ошибка запроса строки воли при передаче строки с нулевым значением в качестве параметра

Количество ссылок метода в файле .dex не может превышать 64k API 17

Я создаю приложение с SugarORM Library, но когда я пытаюсь построить проект для API 17 (не проверял других), он показывает ошибку сборки.

Information:Gradle tasks [:app:assembleDebug] :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAnimatedVectorDrawable2330Library UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72330Library UP-TO-DATE :app:prepareComAndroidSupportCardviewV72330Library UP-TO-DATE :app:prepareComAndroidSupportDesign2330Library UP-TO-DATE :app:prepareComAndroidSupportMediarouterV72300Library UP-TO-DATE :app:prepareComAndroidSupportRecyclerviewV72330Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42330Library UP-TO-DATE :app:prepareComAndroidSupportSupportVectorDrawable2330Library UP-TO-DATE :app:prepareComAndroidVolleyVolley100Library UP-TO-DATE :app:prepareComGithubSatyanSugar14Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServices840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesAds840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesAnalytics840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesAppindexing840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesAppinvite840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesAppstate840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesAuth840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesBase840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesBasement840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesCast840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesDrive840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesFitness840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesGames840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesGcm840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesIdentity840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesLocation840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesMaps840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesMeasurement840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesNearby840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesPanorama840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesPlus840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesSafetynet840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesVision840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesWallet840Library UP-TO-DATE :app:prepareComGoogleAndroidGmsPlayServicesWearable840Library UP-TO-DATE :app:prepareMeDrakeetMaterialdialogLibrary131Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :app:generateDebugBuildConfig UP-TO-DATE :app:generateDebugAssets UP-TO-DATE :app:mergeDebugAssets UP-TO-DATE :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources UP-TO-DATE :app:mergeDebugResources UP-TO-DATE :app:processDebugManifest UP-TO-DATE :app:processDebugResources UP-TO-DATE :app:generateDebugSources UP-TO-DATE :app:compileDebugJavaWithJavac Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. :app:compileDebugNdk UP-TO-DATE :app:compileDebugSources :app:prePackageMarkerForDebug :app:transformClassesWithDexForDebug 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:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2 Information:BUILD FAILED Information:Total time: 21.663 secs Information:2 errors Information:0 warnings Information:See complete output in console 

Но когда я создаю этот проект для android v5.0 или выше, он отлично работает. Если я удалю зависимость от SugarORM gradle, он отлично работает для обоих устройств v4.2.2 и v5.0

Solutions Collecting From Web of "Количество ссылок метода в файле .dex не может превышать 64k API 17"

У вас слишком много методов. Для dex может быть только 65536 методов .

Как и было предложено, вы можете использовать поддержку multidex .

Просто добавьте эти строки в build.gradle :

 android { defaultConfig { ... // Enabling multidex support. multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.0' } 

Также в вашем Manifest добавьте класс MultiDexApplication из библиотеки поддержки multidex в элемент приложения

  <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> <!--If you are using your own custom Application class then extend --> <!--MultiDexApplication and change above line as--> android:name=".YourCustomApplicationClass"> ... </application> </manifest> 

Переопределить метод attachBaseContext

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

Если вы используете свой собственный класс Application , измените родительский класс из Application в MultiDexApplication .

Более подробная информация содержится в документации stackoverflow .

Еще одно решение – попытаться удалить неиспользуемый код с помощью ProGuard. Настройте параметры ProGuard для вашего приложения, чтобы запустить ProGuard, и убедитесь, что у вас есть сокращения для релизов.

Более подробная информация содержится в документации stackoverflow .

 android { compileSdkVersion 23 buildToolsVersion '23.0.0' defaultConfig { applicationId "com.dkm.example" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled true } 

Поместите это внутри вашего defaultConfig:

 multiDexEnabled true 

Его работа для меня

Я получил это сообщение об ошибке, потому что при кодировании моей версии обновления для автоматического обновления проекта в файле build.gradle :

 android { ... buildToolsVersion "23.0.2" ... } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0' } 

Решите его, исправив версию:

 android { ... buildToolsVersion "23.0.2" ... } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:design:23.0.1' } 

Это то, что сработало для меня:

Это происходит потому, что слишком много неиспользуемых методов. Большинство из этих методов поступают из встроенных библиотек в ваш build.gradle

Используйте minify и shrink resources, чтобы исправить это с помощью градиента и очистить свой код одновременно.

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

Я столкнулся с одной и той же проблемой и для поддержки multidex, вы должны иметь в виду minSdkVersion вашего приложения. Если вы используете minSdkVersion 21 или выше, просто напишите multiDexEnabled true, как это

 defaultConfig { applicationId ******************* minSdkVersion 21 targetSdkVersion 24 versionCode 1 versionName "1.0" multiDexEnabled true } 

Он работает для меня, и если вы используете minSdkVersion ниже 21 (ниже lolipop ), тогда вам нужно сделать еще две простые вещи

1. Сначала добавьте эту зависимость

Compile 'com.android.support:multidex:1.0.1'

В вашем build.gradle.

2. Последний и второй добавить одну эту строку ниже в ваше приложение в манифесте

андроид: имя = "android.support.multidex.MultiDexApplication"

 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:name="android.support.multidex.MultiDexApplication" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 

Bingo, тогда он будет работать и в нижней версии .. 🙂 Счастливое кодирование

Эта ошибка также может возникать при загрузке всех игровых сервисов google, когда вы используете только их.

Как указано google: «В версиях сервисов Google Play до 6.5 вам пришлось собрать весь пакет API в ваше приложение. В некоторых случаях это затрудняло сохранение количества методов в вашем приложении (в том числе Интерфейсные API, библиотечные методы и собственный код) под лимитом 65 536.

Начиная с версии 6.5, вы можете выборочно компилировать API-интерфейсы Google Play в свое приложение ».

Например, когда вашему приложению нужны карты игровых сервисов, расположение игровых сервисов. Вам нужно добавить только два apis в файле build.gradle на уровне приложения, как показано ниже:

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

Вместо:

 compile 'com.google.android.gms:play-services:10.2.1' 

Для полной документации и списка игровых сервисов google нажмите здесь.

Для меня Модернизация Gradle works.Look для обновления на Android-сайте, затем добавьте его в свой build.gradle (Project), как это

  dependencies { classpath 'com.android.tools.build:gradle:2.2.0-alpha4' .... } 

Затем синхронизировать проект с файлом градации, и это может произойти иногда из-за java.exe (в моем случае) просто принудительно убить java.exe из диспетчера задач в окнах, а затем запустить программу

Можно также попробовать следующее:

 android{ . . // to avoid DexIndexOverflowException dexOptions { jumboMode true } } 

Надеюсь, это поможет кому-то. благодаря

Вы можете включить «Instant Run» в Android Studio, чтобы получить поддержку multidex.

Сделайте это, это работает:

 defaultConfig { applicationId "com.example.maps" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" multiDexEnabled true }