Estou criando um aplicativo com a Biblioteca SugarORM, mas quando tento criar o projeto para a API 17 (não verifiquei outras pessoas), ele mostra um erro de compilação.
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
Mas quando eu construo este projeto para o Android v5.0 ou superior, ele funciona bem. Se eu remover a dependência gradle do SugarORM, ele funcionará bem para os dois dispositivos v4.2.2 e v5.0.
android
gradle
android-gradle-plugin
android-multidex
sugarorm
Sandeep Singh Rana
fonte
fonte
One or more of the answers is exemplary and worthy of an additional bounty.Just to the point and accurate answer.
Eu sugiro a resposta superior (e aceita)!Respostas:
Você tem muitos métodos. Só pode haver 65536 métodos para dex .
Conforme sugerido, você pode usar o suporte multidex .
Basta adicionar estas linhas no
module/build.gradle
:Também
Manifest
inclua aMultiDexApplication
classe da biblioteca de suporte multidex no elemento de aplicativoSe você estiver usando sua própria
Application
classe, altere a classe pai deApplication
paraMultiDexApplication
.Se você não conseguir, na classe Application, substitua o
attachBaseContext
método por:Outra solução é tentar remover o código não utilizado com o ProGuard - defina as configurações do ProGuard para o seu aplicativo para executar o ProGuard e verifique se você está encolhendo habilitado para compilações de versão.
fonte
No android / app / build.gradle
Coloque isso dentro do seu defaultConfig:
fonte
Recebi esta mensagem de erro porque ao codificar a versão de compilação da atualização automática do meu projeto no meu
build.gradle
arquivo:Resolva-o corrigindo a versão:
fonte
Isto é o que funcionou para mim:
Isso acontece porque existem muitos métodos não utilizados. A maioria desses métodos é proveniente de bibliotecas incluídas em seu build.gradle
Use os recursos minify e shrink para corrigir isso com gradle e limpar seu código ao mesmo tempo.
fonte
Altere o build.gradle no nível do aplicativo:
funcionou para mim.
fonte
multiDexEnabled
opção, sem dependências ou alterações no arquivo manifestoEste erro também pode ocorrer quando você carrega todas as APIs dos serviços do Google Play quando usa apenas algumas.
Conforme declarado pelo google: "Nas versões dos serviços do Google Play anteriores à 6.5, era necessário compilar o pacote inteiro de APIs no seu aplicativo. Em alguns casos, isso tornava mais difícil manter o número de métodos no seu aplicativo (incluindo APIs da estrutura, métodos de biblioteca e seu próprio código) abaixo do limite de 65.536.
A partir da versão 6.5, você pode compilar seletivamente APIs de serviço do Google Play no seu aplicativo ".
Por exemplo, quando seu aplicativo precisa de mapas de serviços de reprodução, localização de serviços de reprodução. Você precisa adicionar apenas as duas APIs no seu arquivo build.gradle no nível do aplicativo, conforme mostrado abaixo:
Ao invés de:
Para obter a documentação completa e a lista de APIs dos serviços do Google Play, clique aqui
fonte
Quando as referências do aplicativo excederem 65.536 métodos, você encontrará um erro de compilação que indica que o aplicativo atingiu o limite da arquitetura de compilação do Android
Suporte Multidex anterior ao Android 5.0
Versões da plataforma anteriores ao Android 5.0 (nível 21 da API) usam o tempo de execução Dalvik para executar o código do aplicativo. Por padrão, o Dalvik limita os aplicativos a um único arquivo de bytecode classes.dex por APK. Para contornar essa limitação, você pode adicionar a biblioteca de suporte multidex ao seu projeto:
Suporte Multidex para Android 5.0 e superior
O Android 5.0 (nível de API 21) e superior usa um tempo de execução chamado ART, que suporta nativamente o carregamento de vários arquivos DEX a partir de arquivos APK. Portanto, se sua minSdkVersion for 21 ou superior, você não precisará da biblioteca de suporte multidex .
Evite o limite de 64K
Configurar multidex no aplicativo para
Se sua minSdkVersion estiver configurada como 21 ou superior, tudo o que você precisa fazer é configurar multiDexEnabled como true no seu arquivo build.gradle no nível do módulo
se sua minSdkVersion estiver definida como 20 ou menos, você deverá usar a biblioteca de suporte multidex
Substitua a classe Application, altere-a para estender MultiDexApplication (se possível) da seguinte maneira:
adicionar ao arquivo de manifesto
fonte
Estou enfrentando o mesmo problema e, para suporte multidex, você deve ter em mente a minSdkVersion do seu aplicativo. Se você estiver usando minSdkVersion 21 ou superior, basta escrever multiDexEnabled true como este
Funciona para mim e, se você estiver usando minSdkVersion abaixo de 21 (abaixo de lolipop ), precisará fazer duas coisas mais simples
1. Primeiro adicione esta dependência
no seu build.gradle.
2. Por último e segundo, adicione um abaixo desta linha ao seu aplicativo no manifesto
Bingo, então ele vai funcionar na versão inferior também .. :) Happy coding
fonte
Apenas um comentário secundário: Antes de adicionar suporte ao multidex - verifique se você não está adicionando dependências desnecessárias.
Por exemplo, no guia oficial de análise do Facebook
Eles afirmam claramente que você deve adicionar a seguinte dependência:
que na verdade é todo o FacebookSDK - por isso, se você precisar, por exemplo, apenas do Analytics, precisará substituí-lo por:
Opções parciais do SDK do Facebook
fonte
facebook-core
efacebook-login
eo erro desapareceu.Para mim, atualizar o Gradle funciona. Procure atualizações no site do Android e adicione-o no seu build.gradle (Project) como este
em seguida, sincronize o projeto com o arquivo gradle, mais isso pode acontecer algumas vezes por causa do java.exe (no meu caso), apenas force o kill java.exe do gerenciador de tarefas no Windows e execute o programa novamente
fonte
Também pode tentar o seguinte:
Espero que ajude alguém. obrigado
fonte
**
Para desenvolvedores de jogos Unity
**
Se alguém vier aqui porque esse erro apareceu no projeto do Unity, vá para Arquivo-> Configurações de compilação -> Configurações do player -> Player. vá para Configurações de publicação e, na guia Compilar, ative "Modelo de classificação do lançador personalizado". um caminho será mostrado sob esse texto. vá para o caminho e adicione multiDexEnabled true assim:
fonte
você pode ativar o "Instant Run" no Android Studio para obter suporte multidex.
fonte
Faça isso, funciona:
fonte