¿Cómo debo organizar el control de código fuente para los proyectos de Android, incluidas las bibliotecas?
Necesito un poco de ayuda para averiguar la mejor manera (o mejor práctica) para organizar mi proyecto de Android. Por motivos de simplicidad, digamos que mi espacio de trabajo Eclipse para Android es C:\Android\Projects\
. Dentro de esa carpeta me gusta separar las aplicaciones de las bibliotecas y tengo otras dos carpetas, C:\Android\Projects\Applications
y C:\Android\Projects\Components
.
Para un proyecto he clonado una biblioteca de GitHub en la carpeta de Components
, digamos C:\Android\Projects\Componentes\SampleLib
(dentro de esa carpeta hay dos carpetas TheLib
y TheLibExample
). Y mi aplicación se crea en C:\Android\Projects\Applications\MyTestApp
. Luego incluí la biblioteca en la aplicación siguiendo estas instrucciones .
- Android Studio: Cómo elegir qué importar de VCS
- ¿Qué es un buen sistema de control de código libre para el desarrollo de android de eclipse?
- Importar proyecto de prueba de Android en Eclipse desde el control de versiones
- Intellij (Android Studio) git integración: ¿Dónde está .git?
- Cómo bifurcar el código de todo el sistema operativo Android?
Ahora digamos que quiero usar GitHub para compartir mi aplicación con la comunidad de código abierto. C:\Android\Projects\Applications\MyTestApp
un repositorio y empujaré todo desde C:\Android\Projects\Applications\MyTestApp
en algún repositorio.
Si alguien quiere bifurcar mi aplicación o incluso me ayuda, necesitará la biblioteca para compilarla y ejecutarla, la cual no está incluida en mi propio proyecto. El archivo default.properties
tendrá algo como android.library.reference.1=../Components/SampleLib/TheLib
y que alguien necesitará clonar manualmente esa biblioteca también y él tendría que colocarlo en la misma ruta relativa, de lo contrario Sería perjudicar el control de código fuente de mi aplicación.
La única forma en que puedo pensar en solucionar este problema es organizar mi espacio de trabajo de la siguiente manera:
C:\Android\Projects\Applications\MyTestApp\TheApp C:\Android\Projects\Applications\MyTestApp\TheLib C:\Android\Projects\Componentes\SampleLib
Y mi repositorio debe estar lleno con el contenido de C:\Android\Projects\Applications\MyTestApp\
.
Pero, ¿qué ocurre cuando se actualiza la biblioteca? No puedo simplemente tirar de los nuevos cambios, necesito copiarlos en la carpeta TheLib
. En la organización de carpetas anterior esto no sería necesario ya que estaba haciendo referencia al repositorio clonado original y no a una copia.
¿Que debería hacer entonces? ¿Debo ir con la opción uno y dejar que cualquier persona que bifurca mi proyecto se ocupe de la dependencia de la biblioteca como lo consideran conveniente, o debo ir con el segundo y dar a cada uno más trabajo guardando dos carpetas en sincronización cuando el original tira cambios de él es ¿repositorio?
- Funciones de llamada dentro de fragmentos en Android
- ¿Cómo obtener información sobre la versión del mercado de las aplicaciones de Google Play Store?
- La carpeta "gen" de Android y SVN - enemigos amargos
- Acabo de crear pequeño proyecto androide en Eclipse, ¿qué archivos debo agregar al control de versiones?
- Android Dev: ¿SVN local para proyectos Android?
- ¿Cómo debo estructurar mi proyecto para compartir clases entre una aplicación cliente de Android y una aplicación de servidor JSP?
- Incorporar detalles de la versión en android APK
- ¿Qué entra en el control de código fuente?
Tal vez los submódulos git resolverán su problema.
Personalmente creo que el proyecto de la biblioteca de Android es un diseño FAIL. Es ridículo que la única manera que quiero referir / usar otro pedazo de código es conseguir otro proyecto entero y configurar todo a nivel de configuración IDE. ¿Qué es una biblioteca? Debe ser un componente reutilizable compilado y empaquetado en un formato de archivo. De acuerdo con su importante ubicación de almacenamiento de biblioteca de proyecto , no creo que haya una solución fácil que podamos romper el vínculo y administrar la biblioteca como una biblioteca real. Si su biblioteca no es tan androidized, trate de escribir / construir es como una biblioteca jar simple y el uso de maven administrar la biblioteca jar compilación / liberación y dependencias del proyecto.
Hmmm, es razonable que Google lo llame Android Library Project , no Android Library .
Personnalmente pienso que los submódulos git no proporcionan por completo un sistema muy fácil de usar y poderoso para las dependencias de la biblioteca.
Los subárboles Git son una mejor alternativa. He encontrado una guía muy útil que explica cómo hacerlo.
Básicamente, puede crear una subcarpeta que contenga sus dependencias y clonar los repositorios dentro de esa subcarpeta:
$ mkdir vendor $ git remote add -f ABS https://github.com/JakeWharton/ActionBarSherlock $ git merge -s ours --no-commit ABS/master $ git read-tree --prefix=vendor/ABS/ -u ABS/master $ git commit -m "Merged ABS into vendor/ABS/" # Now another lib $ git remote add -f Crouton https://github.com/keyboardsurfer/Crouton $ git merge -s ours --no-commit Crouton/master $ git read-tree --prefix=vendor/Crouton/ -u Crouton/master $ git commit -m "Merged Crouton into vendor/Crouton/"
Entonces, tendrá en este ejemplo dos repos / libs dentro del vendor/
; Sólo tiene que agregarlos a su sistema IDE / build.
La ramificación de Git y las modificaciones son mucho más fáciles y más sencillas que con submódulos.
Incluso he creado un pequeño script que automatiza este proceso para una lista de libs.
- Marquee TextView en el Widget de la aplicación
- Error al inflar la clase android.support.v7.widget.AppCompatEditText