Recientemente comencé a vender mi aplicación Android en Google Android Market, e implementé su esquema de licencias de aplicaciones para evitar el uso no autorizado de mi aplicación. Ahora planeo lanzarlo para Amazon App Store de Amazon y quiero saber cuál es la mejor forma de mantener dos versiones de mi aplicación: una que implementa Android Licensing y otra que no.¿Cómo puedo admitir mi aplicación Android para múltiples tiendas Android?
Aunque mi solución actual funciona, no es óptima, y estoy tratando de descubrir cómo otras personas han tratado con esto. En este momento, he implementado dos pantallas de presentación para mi aplicación, SplashGoogle.java y SplashAmazon.java. Tengo dos archivos Manifest correspondientes, GoogleManifest.xml y AmazonManifest.xml. Cada manifiesto define un splash diferente como la intención del iniciador.
Cuando deseo liberar una versión de mi aplicación, cambio el nombre de uno de estos archivos de manifiesto a AndroidManifest.xml, exporto la aplicación y luego hago lo mismo con el otro Manifiesto. Esta es mi solución porque es lo mejor que se me ocurre y no conozco otras formas de hacerlo. Funciona porque la única diferencia entre las versiones de Amazon y Google market de mi aplicación son las clases de salpicaduras correspondientes, una que verifica las licencias y la otra que no.
En el camino, es posible que desee implementar cambios adicionales (o consolidar para tener solo una pantalla de inicio) y estoy buscando un medio más permanente de administrar cambios sutiles dentro de la misma aplicación.
Imagino que problemas similares surgen cuando los desarrolladores crean versiones lite, gratuitas o con publicidad de aplicaciones pagas.
Notas adicionales:
- Para la versión que utiliza licencias de Android de Google, que solicitan el permiso CHECK_LICENSE en el archivo AndroidManifet.xml, mientras que en la versión de Amazon, esto no es necesario.
No estoy seguro de si esto se debe considerar como una wiki de la comunidad, pero si es así, márquelo como tal, a diferencia de para cerrar la pregunta. Creo que esto sería útil para muchos desarrolladores.
¡Esto suena genial! Lo único que me impide implementarlo para mi situación particular es que requiere archivos AndroidManifest.xml duplicados, entre otros archivos, los principales problemas que estoy tratando de evitar en primer lugar. Sin embargo, ciertamente haré esto si alguna vez creo versiones de aplicaciones gratuitas/pagas, y me gustaría agradecerle la explicación. – finiteloop
¿Hay alguna manera de tener una clase definida en un proyecto superior para anular lo que está en el código común? – finiteloop
Me gustaría hacer esto porque quiero que mi proyecto de biblioteca compile sin errores, pero tenga variables establecidas para cada proyecto – finiteloop