Biblioteca de fuente privada con configuration de gradle de aplicación de muestra pública

Estamos desarrollando una biblioteca android y las fonts no están abiertas. Sin embargo, se distribuye a través del repository de maven para comodidad del cliente.

También proporcionamos una aplicación de muestra para esta biblioteca cuyas fonts están abiertas.

Estamos tratando de hacer la configuration para lograr que la aplicación de muestra se desarrolle al mismo time que la biblioteca. Por lo tanto, es conveniente depurar si es necesario y modificar el código sobre la marcha.

Así que creamos dos repositorys git para aplicaciones y bibliotecas. Pero cuál es la mejor manera de incorporarlos. Vemos las siguientes posibilidades:

  • utilizar maven local con instantáneas de biblioteca
  • copyr la aplicación de muestra a la biblioteca como module y en el momento de la publicación fusionar todos los cambios al repository de la aplicación de muestra con la actualización de la dependencia de la biblioteca desde el module al artefacto desde el repository
  • ligera variación del submodule git de uso anterior

Ninguno de ellos parece eficiente y elegante. Pero al mismo time, las cosas que estamos construyendo no son únicas. Me pregunto cómo lo hacen los demás.

Intenté search bibliotecas en github, pero todas son bibliotecas públicas y aplicaciones de muestra solo submodules.

Nota importante: estamos utilizando Android Studio, por lo que es preferible minimizar el número de windows AS abiertas

Puede crear una estructura multiproyecto regular pero cambiar entre dependencies según algunos criterios 19.2. Propiedades de Gradle y properties del sistema . De esta forma, el proyecto de ejemplo en la máquina de desarrollo tendría acceso al proyecto de la biblioteca que podría editarse y rebuildse, pero el usuario de la muestra que se abre podría recurrir a dep dep binary maven.

multiproject (under git as 3rd project or as part of the library git) library (under git) build.gradle sample (under another git) build.gradle (if has libmodule defined use it, otherwise repo artefact) build.gradle settings.gradle 

Pseudo código:

 dependencies { compile hasDevMachineBoolean() ? project(':library') : "com.packagename.sdk:library:1.0" }