Carga de clase dinámica con IntelliJ – 64K method dex issue
Estoy trabajando en un proyecto que se está acercando rápidamente al límite del método 64K para los archivos del dex. Esta publicación de blog para desarrolladores de Android (desde julio de 2011) explica cómo obtener una carga de clase dinámica trabajando con una compilación de línea de comandos dirigida por Ant, pero no explora cómo hacerlo funcionar desde IDE (además de decir que no funcionará en Eclipse ).
Miré alrededor y no pude encontrar nada en conseguir este sistema para trabajar desde IntelliJ. ¿IntelliJ admite la creación de aplicaciones con múltiples archivos dex? Si es así, ¿cómo lo configuramos?
- Error "no se pudo obtener el modelo de tipo 'BasicIdeaProject' utilizando Gradle distribución" en Windows?
- Android-studio no puede encontrar una interfaz de ayuda para su uso en clase
- Intellij Idea log GradleConnectionException: No se pudo ejecutar la compilación usando la instalación de Gradle mientras se construye
- Cómo evitar que Autocompletar de Android Studio quita el token adyacente
- ¿Hay una manera de marcar TODO completo en el estudio de Android?
- JavaPoet + Android Studio "addModifiers (Modifier) no se puede aplicar a Modificador"
- Integración de AndroidAnnotation con Intellij IDEA 12
- La sincronización gradle falló en intellij idea 13.1.1
- Android Studio / Intellij, Gradle Error: Causa: no homologado
- Idea 15 / Android Studio 1.4 se bloquea en la sincronización gradle para proyectos grandes
- Android ProGuard No se puede acceder a jarfile .. \ lib \ proguard.jar en IntelliJ 11.1
- Problemas con Android Studio Gradle: Configuración de JDK de Gradle no válida encontrada
- Problemas al iniciar error en Android Studio cuando packageDebug en Max OS X
Trate de usar ProGuard para quitar las clases y métodos no utilizados de su proyecto y debería (esperanzadamente) encontrar que no necesita múltiples archivos dex.
Dicho esto si lo hace: IntelliJ y Eclipse son sólo IDEs – no directamente construir su código – por lo que tendrá que identificar cómo se está construyendo su proyecto – más probable hormiga o Gradle.
Si su proyecto es un proyecto de Gradle, entonces habrá un archivo build.gradle en la raíz del proyecto; si este es el caso, entonces tendrá que buscar cómo lograr lo mismo con el complemento de Android Gradle, un buen lugar para comenzar Puede ser http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Manipulating-tasks .
Hay dos opciones:
- Romper la clase existente. O
- Mueva su clase a otro proyecto y construya como una biblioteca (.jar). Y como sugiere la publicación del blog (mencionada en la consulta), utilice su clase para cargar esta biblioteca (.jar) en su proyecto por separado.
¿Puede proporcionar detalles sobre su proyecto?
Recientemente tuve el mismo problema después de conectar la biblioteca PlayN a mi proyecto. Primero leí todos los posts que mencionaste y cosas relacionadas, pero eventualmente resolví el problema al excluir parte de las clases del tarro dependiente de Pitágoras (eliminé el paquete pythagoras.d, que es para "doble", ya que pythagoras.f, Float ", fue utilizado en lugar de en PlayN), que fue una de las mayores dependencias en PlayN.
Tal vez usted puede encontrar similar lugar débil en sus dependencias de proyectos.
Eclipse puede lanzar scripts de hormigas externas pero que no ayudará con las herramientas. La mejor recomendación es Android Studio y Gradle, ya que todos los comandos se ejecutan externamente al IDE y, a continuación, portan este script de Ant. http://code.google.com/p/android-custom-class-loading-sample/source/browse/ Trunk / android-custom-class-loading-sample / build.xml para gradle.
Mantenga un ojo hacia fuera para cierto apoyo oficial en las líneas de: https://groups.google.com/forum/#!topic/gradle-android-plugin-users/zG_xUeVaV7s
Multidex parece ser la mejor (y más rápida) opción para abordar el límite del método de 65K. Google tiene una gran documentación sobre cómo configurar Multidex aquí .
- ¿Cómo puedo añadir un RecyclerView horizontal dentro de un elemento de lista
- ¿El campo de dirección almacenará varios números de teléfono cuando envío un sms a varios números de teléfono al mismo tiempo?