IntelliJ + git + submódulos -> ¿Dónde se coloca el .iml?
Tenga en cuenta: No utilizar Gradle / Maven.
Guión:
- "Recurso no encontrado" al crear una aplicación para Android en IntelliJ 9.0 Maia Public Beta
- IntelliJ Idea dando java.lang.OutOfMemoryError: Error de espacio de montón de Java incluso después de aumentar el tamaño de montón
- Cómo configurar la configuración de SONAR para el complemento de sonar intellij para Android Studio?
- ¿Cómo se integra Robolectric, Maven, ActionBarSherlock (y preferiblemente + IntelliJ) en un proyecto de Android?
- ¿Cómo desinstalar completamente el SDK de tejido de Twitter del proyecto android?
Una aplicación Android típica, requiere el SDK de Facebook , tienes algunas opciones:
- Clonar el SDK en algún lugar de tu disco, copiar el contenido de
/facebook-android-sdk/facebook
(donde reside el código fuente de Android para la biblioteca) en/myapp/facebook
por ejemplo, importar un módulo en IntelliJ, apuntarlo a esto Nuevo/myapp/facebook
camino y lo llaman un día. IntelliJ creará un facebook.iml (y modificará su proyecto.properties y otros archivos relacionados con.idea
para tener en cuenta este nuevo módulo). A continuación, puede agregar este nuevo módulo a su repositorio y tratarlo como cualquier otra biblioteca. - Clonar el SDK dentro del directorio de tu aplicación, por ejemplo:
/myapp/facebook-android-sdk/*
e importar un módulo en IntelliJ, apuntarlo a esta nueva ruta y tratarlo como otro repositorio git (puedes incluso tirar de Facebook para obtener nuevos Cambios, aunque a veces esto puede romper el módulo). - Cree un submódulo git apuntando al repositorio github de Facebook SDK, importe un módulo en IntelliJ apuntando al submódulo, lo más probable es que se importe correctamente en
/myapp/facebook-android-sdk/*
.
Antes de seguir adelante, veamos algunos aspectos particulares de cada uno:
- PROS : Es un enfoque de incendio y olvidar y limpiar, incluso puede cambiar el SDK a su gusto, porque sólo importó la biblioteca y tiene el código fuente. CONTRAS: tedioso para mantenerse al día. Cada vez que hay una nueva actualización de FacebookSDK, tiene que actualizar manualmente su clon externo, copiar el SDK y / o volver a agregar el módulo (y asegúrese de que funciona!). Si usted tiene cambios locales, las cosas son más difíciles.
- PROS: Es más fácil actualizar que # 1, pero realmente no puedes realizar cambios (a menos que hayas creado un fork ), porque no tenemos acceso de escritura al FacebookSDK. CONS: tu
facebook.iml
y las cosas siempre estarán " sucias " en git, porque no puedes cometerlo (ya que es un repo diferente). - PROS: El enfoque más limpio en términos de tecnología, estás haciendo "lo correcto" usando un submódulo y dejar git apuntar al repositorio correcto y tratarlo correctamente como tal. CONTRAS: los submódulos son … bien delicados si no se tratan con cuidado, pero que asidio, las mismas reglas que # 2, a menos que su submódulo es un tenedor que puede controlar, no se puede cambiar el FacebookSDK y comprometerse a él, por lo que esto te deja Con el problema de la
facebook.iml
que IntelliJ crea cuando se agrega el módulo a su proyecto, circulando por el directorio de submódulos … lo que me lleva a la pregunta …
Si no puede comprometerse a un submódulo porque no tiene permiso (como el FacebookSDK), donde (y cómo) puede poner el módulo.iml (facebook.iml en este ejemplo) que IntelliJ pone dentro de cada nuevo módulo para que su otro Los usuarios pueden clonar su repositorio, hacer una git submodule update
y git submodule update
y no obtener el típico IntelliJ error "Problema módulo de carga". La solución al problema anterior consiste en cada clonación de nuevos usuarios, tener que decir "sí" a "eliminar facebook del proyecto" y luego agregar / importar el módulo de nuevo (las dependencias, si respetan el nombre, se guardan correctamente para el otro Módulos, por lo que es bueno).
- XmlPullParser obtener archivo del sistema de archivos
- Error Proguard Número de versión de clase no admitido
- Si cambio una biblioteca externa: AndroidManifest, no puedo analizar el archivo
- Cómo crear un setter personalizado de plantillas Intellij para su uso con Guava
- com.android.build.gradle.internal.model.ApiVersionImpl no se puede transmitir a java.lang.Integer mientras migra el proyecto AS a IDEA
- IntelliJ "mantener sangrías en líneas vacías" no funciona
- Android Studio - Problema con Android SDK en Windows 7
- IntelliJ y android.support.v7.widget.GridLayout