¿Está bien comprobar la legalidad de instalar la aplicación android pagada comprobando getInstallerPackageName?

Para asegurarme de que mi aplicación Android pagada se instaló legalmente desde la tienda, escribo esto:

String installer = getPackageManager().getInstallerPackageName( "com.example.myapp"); if (installer == null) { // app was illegally downloaded from unknown source. // dear user, please re-install it from market } else { // app was probably installed legally // (also it's good to check actual installer name) } 

¿Está bien? ¿Existe alguna posibilidad de que la aplicación legalmente comprada e instalada desde el mercado obtenga el nombre del paquete del instalador vacío y no se realice en esta prueba?

Entiendo que el usuario puede ejecutar adb -i com.fake.installer myapp.apk y pasar esta comprobación, pero es más importante si los usuarios legales obtendrán problemas potenciales o no.

No debe utilizar PackageManager#getInstallerPackageName para comprobar si la aplicación se ha instalado desde Google Play o para fines de licencia por las siguientes razones:

1) El nombre de paquete del instalador puede cambiar en el futuro. Por ejemplo, el nombre del paquete de instalador es "com.google.android.feedback" (ver aquí ) y ahora es "com.android.vending" .

2) Comprobar el nombre de paquete del instalador por razones de piratería es equivalente a usar Base64 para cifrar contraseñas – es simplemente mala práctica.

3) Los usuarios que compraron legalmente la aplicación pueden cargar el APK de lado o restaurarlo desde otra aplicación de copia de seguridad que no establece el nombre de paquete de instalación correcto y obtiene un error de comprobación de licencia. Esto conducirá muy probablemente a revisiones malas.

4) Como usted mencionó, los piratas pueden fijar simplemente el nombre de paquete del instalador al instalar el APK.


Debe utilizar Licencias de aplicaciones o cambiar a Facturación integrada en la aplicación .

Mientras que getInstallerPackage("com.example.mypackagename") hace el truco y es básicamente un poco más difícil para los "hackers" todavía hacer uso de su aplicación de pago sin realmente pagar por ello, es cierto que no es el mejor método para no Deja que esto suceda.

¿Qué puedes hacer en su lugar?

  • Puedes agregar una licencia a tu aplicación.

Cómo funciona la licencia

Esto básicamente garantiza que la aplicación ha sido comprada por el usuario utilizando el teléfono.

  • Otra cosa que puedes hacer es hacer que tu aplicación sea gratuita y añadirle las compras de aplicaciones. En tu caso, solo UNO en la compra de aplicaciones, una suscripción única. Esto, en mi opinión, es la mejor solución a este problema, por dos razones:
    1. Resuelve su problema original, no permitiendo que los usuarios usen sus funcionalidades premium a menos que realmente las compren.
    2. Hace que tu aplicación sea más amigable para descargar. Los usuarios pueden probarlo antes de comprarlo, y esto siempre es una ventaja cuando se trata de ganar más usuarios.

Por supuesto, hay un inconveniente en esto: usted tiene un montón de trabajo si la arquitectura de su aplicación no se construyó en torno a esta idea. Sin embargo, creo que vale la pena.

  • Google Play Services no muestra la tabla de clasificación después de Auth
  • ¿Cómo hacer que la aplicación android esté disponible para tablets y pre 11 sdk?
  • API de estadísticas de desarrollador de Google Play
  • Enlace de política de privacidad Google Play
  • Android: cambia el nombre del paquete de la aplicación en vivo
  • Descubre por qué se está desinstalando una aplicación de Android
  • Estrategia de licencias de Android para publicar en Google Play y en la tienda de aplicaciones de Amazon
  • ¿Es posible pasar parámetros url a google play? (Pasar cadenas de consulta)
  • La compra en la aplicación utiliza una cuenta incorrecta después de la actualización
  • Cómo corregir - "Esta versión de la aplicación no está configurada para la facturación de mercado"?
  • ¿Es posible impedir que la aplicación de Google Play cree un acceso directo de mi aplicación en la instalación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.