Android Studio w / gradle: El paquete r no existe

Edición Final:

Esta fue una especie de pregunta larga con varias ediciones, y yo no estaba necesariamente haciendo lo correcto en cada paso del camino. Para cualquier persona que se tropieza con esta pregunta y está teniendo problemas para convertir un proyecto a gradle en Android Studio, le sugiero que echa un vistazo a este repositorio mencionado en la pregunta # 16718026 y tratando de importar y compilar y ejecutarlo. Una vez que tiene algo de trabajo es más fácil ver lo que podría estar mal con su propio proyecto.

Para resumir, he aquí lo que hice para convertir un proyecto de Studio Android no Gradle en un Gradle de trabajo, usando Android Studio .2.5, que instaló automáticamente Gradle 1.6 y el Gradle Plugin .5 para mí.

(1) Creó un nuevo proyecto de Android Studio en blanco con un icono y una actividad. NOTA: No me di cuenta de esto al principio porque estaba aprendiendo Android y Gradle al mismo tiempo, pero Android Studio (en esta versión de todos modos) en realidad te prepara con una configuración de varios proyectos, lo cual fue confuso para mí. Multi-Proyecto significa que hay otra carpeta por encima de su proyecto en la jerarquía, que proporciona una ubicación para almacenar la configuración de todos los proyectos. AS no creó un archivo build.gradle en la carpeta del subproyecto (en mi caso, FrontlineSMS), a pesar de una guía de vídeo que indica que lo haría. Así que tuve que crear ese archivo build.gradle subproyecto y también crear un settings.gradle muy simple (ver la actualización 2 a continuación.)

(2) copiado src /, res /, .git /, lib /, .gitignore y AndroidManifest.xml a la raíz del nuevo proyecto.

(3) Utiliza git mv para mover estos elementos a los lugares apropiados de acuerdo con las convenciones de la Guía del Usuario de Gradle Plugin, reemplazando o eliminando algunos archivos o carpetas existentes en el proyecto en blanco cuando sea necesario.

(4) Creó un build.gradle en mi carpeta de subproyectos y le dio algunos ajustes básicos (ver abajo o en la pregunta relacionada arriba)

(5) Importó el proyecto como se describe en la actualización 4

Pregunta original:

Soy un desarrollador de Android novato tratando de convertir un proyecto de Android Studio que no utiliza actualmente Gradle (y compila y corre muy bien) a uno que utiliza Gradle en OS X. Estoy atascado en un error de recurso, que creo que puede Tienen que ver con mi estructura de proyecto, configuración en el IDE, configuración en los archivos build.gradle, o alguna combinación de los mismos.

La forma en que realicé la conversión fue crear primero un nuevo proyecto en Android Studio, copiar archivos en ubicaciones apropiadas y agregar algunos ajustes en los archivos IDE y build.gradle. Mi estructura de proyecto resultante es,

 ├── frontlinesms-for-android ├── build.gradle ├── gradle ├── gradlew ├── gradle.bat ├── settings.gradle (added in update 2) ├── local.properties ├── lib └── lib1.jar └── lib2.jar └── ... ├── frontlinesms-for-android.iml ├── FrontlineSMS └── build.gradle └── src ├── main │  └── res │  └── AndroidManifest.xml │  └── java │  └── net │  └── frontlinesms │  └── android │  ├── FrontlineSMS.java │  ├── ... 

Lo más notable, quizás, es que pongo la carpeta res / al mismo nivel que java / y AndroidManifest.xml. Estoy tratando de seguir las convenciones mencionadas en la Guía del Usuario del Plugin Gradle para que no tenga que personalizar demasiado en los archivos build.gradle.

También marcó la carpeta FrontlineSMS / src / main / java / net como fuente, porque si no lo hago, entonces nada intenta compilar. Creé un nuevo archivo build.gradle en FrontlineSMS / build.gradle porque no existía cuando hice el nuevo proyecto, a pesar de que un video instruccional en el sitio web de Gradle dijo que lo haría.

En el IDE también establezco las dependencias para las bibliotecas externas que tengo en / lib.

Cuando intento compilar vía el IDE consigo muchos Package r does not exist errores, indicando que la clase de R generada automáticamente no está consiguiendo generada o reconocida. Esto se define en el proyecto como,

 import net.frontlinesms.android.R; 

En varios archivos. ¿Qué puedo hacer para que Android Studio / Gradle reconozca los recursos que he definido en src / main / res?

Al leer las preguntas de otros, noto que algunas soluciones a este error implicaban marcar una carpeta "gen /" como una raíz de origen o "limpiar" el proyecto. Intenté crear un gen / carpeta en el directorio de la raíz y marcándolo como fuente pero eso no trabajó. Y, la reconstrucción del proyecto sólo me da los mismos errores.

Mi archivo build.gradle raíz tiene el siguiente,

 dependencies { compile project(':FrontlineSMS') } 

Y el que está bajo FrontlineSMS / build.gradle tiene,

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.4' } } apply plugin: 'android' dependencies { compile file('../lib/acra-3.1.1.jar') compile file('../lib/activation.jar') compile file('../lib/additionnal.jar') compile file('../lib/annotations.jar') compile file('../lib/libGoogleAnalytics.jar') compile file('../lib/mail.jar') } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 16 } } 

Cuando intento construir de la línea de comando usando ./gradlew clean consigo este error,

 (removed error) 

Además de mi pregunta anterior, agradecería cualquier consejo que pueda prestar sobre cómo este proyecto debe estructurarse. Esto no pretende ser una configuración de varios proyectos. Gracias por tu ayuda.

Actualización 1

Fui capaz de generar un APK desde la línea de comandos. Mi principal problema es que estaba llamando gradle clean del directorio equivocado. Llamar desde FrontlineSMS funcionó. Supongo que Android Studio me configuró con una configuración de varios proyectos cuando acababa de tener un proyecto, y no había introducido todas las configuraciones para eso, es decir, no había creado un archivo settings.gradle.

Actualización 2

Creé el siguiente archivo settings.gradle, que me permite ejecutar gradle clean && gradle build desde el directorio raíz (donde reside el settings.gradle):

 include ':FrontlineSMS' 

Nota: la versión de gradle que estoy usando aquí es la instalada por homebrew, 1.6. Si utilizo el envoltorio gradlew que fue instalado, dice:

 Gradle version 1.6 is required. Current version is 1.7 

La búsqueda en la web de este error parece indicar que Android no es compatible con 1.7 en este momento, sólo 1.6 (y tal vez es siempre una o dos versiones), pero esta es la versión que fue instalado por Android Studio cuando creé un nuevo ¡proyecto!

Actualización 3 (editar: esto es básicamente todo mal, no siga esto)

El intento de construir el proyecto desde Android Studio genera el mismo error que anteriormente con respecto a 1.6 que se requiere. Traté de reimportar el proyecto, aunque dijo que no podía encontrar ningún archivo de origen. Supongo que esto significa que (1) tengo la versión incorrecta de gradle y la necesidad de arreglarlo y tal vez (2) necesitaré definir los archivos de origen en el archivo build.gradle después de todo, aunque pensé que estaba siguiendo el Convenciones de la guía.

He intentado copiar gradle-wrapper-1.6.jar para reemplazar gradle/wrapper/gradle-wrapper.jar pero que acaba de dar un error de clase o método no encontrado cuando lo corría a través de ./gradlew clean .

Solución intentada: En gradle/wrapper/gradle-wrapper.properties hay una línea distributionUrl= y cambié esto para apuntar a la versión 1.6,

 distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip 

Entonces la próxima vez que corrió ./gradlew clean descargó una nueva versión de gradle en mi directorio home ~/.gradle (que hasta ahora no me di cuenta existía) y ahora cuando ./gradlew --version it Dice que está en 1.6, y todo se construye a través de la línea de comandos usando ./gradlew clean && ./gradlew build , resultando en apks. Así que parece que funciona desde la línea de comandos, pero también quiero que esto funcione desde el IDE

En el IDE ahora dice

 Project is using an old version of the Android Gradle plug-in. The minimum supported version is 0.5.0 

Así que actualizar el archivo build.gradle para decir

 classpath 'com.android.tools.build:gradle:0.5' 

Y reabrir el IDE, que me dice,

 Could not find com.android.tools.build:gradle:0.5. 

¿Están Android Studio gradle plugin y gradle versiones unidas? Si es así, ¿qué es lo que quiero, gradle plugin .4 + gradle 1.6 o gradle plugin .5 y gradle 1.7? ¿Y cómo instalar correctamente estos?

Actualización 4

Finalmente conseguí esto compilar vía la línea de comando y el IDE. El truco era importar el proyecto usando Gradle después de haber creado los archivos básicos de Gradle. Gracias Ethan! Durante el proceso de importación, hay un paso en el que se selecciona "Crear proyecto desde fuentes existentes" o "Importar proyecto desde modelo externo". Había escogido a la primera cuando debía haber elegido a la última y escoger Gradle. Después de eso seleccioné "utilizar gradle-wrapper (recomendado)" y marcó "use auto-import" y clicé en Finish. Me advirtió acerca de un par de cosas que tuve que cambiar, como el uso de la última gradle plugin, para que hice este cambio en mi archivo build.gradle ,

 classpath 'com.android.tools.build:gradle:0.5.+' 

Que se sugiere en los problemas conocidos para el complemento androide gradle.

Parece que le falta su archivo settings.gradle desde el directorio raíz del proyecto.

Vas a necesitar el archivo settings.gradle para acceder al subproyecto que se encuentra dentro de tu repositorio de origen.

Cuando importe el proyecto asegúrese de seleccionar Gradle como fuente!

En realidad un par de puntos:

Ir al archivo -> configuración -> gradle y navegar a:

Seleccione Usar distribución de gradle local y vaya a:

C: \ users \ .gradle / wrapper / dists / gradle-1.6-bin / 72srdo3a5eb3bic159kar72vok / gradle-1.6

Esto funciona, pero tienes que borrar todas las cosas anteriores, por ir a:

Archivo -> Invalidar cachés / reiniciar

Entonces usted debe volver, se volverá a importar (podría pedirle a configurar de nuevo gradle si lo anterior no era exactamente correcto creo)

Ahora debería funcionar … no tiene que crear manualmente los archivos build.gradle.

El settings.gradle bajo el proyecto de nivel superior en realidad.

Por último, si la estructura del proyecto no muestra mucho (la mía sólo me mostró la configuración de la plataforma y no tenía todas las otras selecciones en la mayoría de las guías), puede hacer clic con el botón derecho en su proyecto de nivel superior, por ejemplo, HelloWorldProject y luego Puede llegar a donde usted necesita.

Algunas capturas de pantalla de lo anterior pueden ser útiles – parece que están cambiando los diseños etc y ocultar cosas para que las guías oficiales no siempre son correctas:

Lame no puede publicar tus imágenes …

Muestras (con proyecto multi módulo y proyectos multi lib).

http://tools.android.com/tech-docs/new-build-system/

Desplácese hasta la parte inferior.

respecto a

 Could not find com.android.tools.build:gradle:0.5. 

Este tarro no está en maven central, viene con Android Studio 0.2. + Normalmente sucede si actualizas Android Studio de pre 0.2 que no tiene repo de m2 interno. Instalar Android Studio fresco y debe funcionar. La misma historia con la biblioteca de soporte.

  • Detectar subrogados altos en una cadena utilizando expresiones regulares
  • Android: layout_gravity no funciona como se esperaba
  • Sube la imagen de android a java servlet y guárdala
  • ¿Cuál es la diferencia entre DataOutputStream y ObjectOutputStream?
  • XPath.Evaluar el rendimiento se ralentiza (absurdamente) en varias llamadas
  • ¿Cómo puedo incluir dependencias en mi biblioteca de Android?
  • OnSaveInstanceState con Singleton
  • Error al iniciar Studio de Android
  • Androide lectura entrada de usuario en un servicio
  • Android: Descarga de un archivo protegido por autenticación NTLM
  • Android Java - String .replaceAll para reemplazar caracteres específicos (regex)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.