APK de más de 50 MB

La limitación del tamaño de un APK en Android Market ahora es de 50 MB. Sin embargo, estoy haciendo una aplicación que es realmente más grande.

El tamaño de mi aplicación se debe a los videos. Sin embargo, incluso si no lo hago ahora, si crearé una aplicación gratuita o de pago, no quiero que nadie pueda copiar / reutilizar mis videos. Por lo tanto, no puedo cargar mis videos en Internet y simplemente descargarlos de mi aplicación para copiarlos al teléfono o la tarjeta SD. En este caso, todos tendrían acceso al archivo con todos los videos.

¿Podemos pedirle a Google que acepte una aplicación más grande (con un costo adicional si es necesario)? ¿Hay otras soluciones?

preguntado el 08 de enero de 11 a las 15:01

Por favor, tenga cuidado con nosotros, que estamos atascados con el teléfono pre-app2sd y tenemos poca memoria interna; apk es realmente fácil de descompilar (de hecho, es solo un archivo .zip simple), y no se necesitaría mucha habilidad para extraer el video de su apk. Si desea algún tipo de protección de contenido, debe cifrar su contenido. Y si ya está encriptando su contenido, ¿por qué no ponerlo como descargable en Internet? -

Pero aún no tengo conocimiento en encriptación :(. No tengo idea de si es difícil ... creo que usaré la solución con videos en línea y los descargaré. -

3 Respuestas

Video sin cifrar en APK

Esto es lo que estás tratando de hacer: pones un video sin cifrar en tu apk. Ampliando el tamaño de la apk y superando el límite de Google Market.

Cómo vencer el esquema: un usuario rooteado debe extraer el apk, descomprimirlo y publicar su video en Youtube para que todos lo vean.

Video encriptado en Internet

Aquí hay un esquema de cifrado que debería ser mucho más seguro que simplemente poner el video en el .apk. El esquema requeriría un algoritmo de cifrado de clave pública.

Su programa debe generar un par de claves criptográficas basadas en la identificación única del dispositivo, envía la clave pública al servidor. El servidor cifrará el contenido utilizando esta clave pública y luego lo enviará a su programa. Este contenido cifrado solo se puede usar en este dispositivo en particular, ya que solo este dispositivo en particular tiene la clave privada correspondiente para descifrar el contenido cifrado. No necesita almacenar la clave privada en el dispositivo, se puede generar sobre la marcha cada vez que se inicia su programa. La tarjeta SD contendrá el contenido cifrado que solo se puede descifrar con este dispositivo en particular.

El inconveniente de este esquema es que necesita un algoritmo que sea lo suficientemente ligero para el descifrado sobre la marcha mientras se reproducen videos. La reproducción de video, por sí sola, requiere muchos recursos y el descifrado también requiere muchos recursos. Además, necesita un servidor que sea lo suficientemente potente como para encriptar el video una vez cada vez que la gente instala su programa.

Cómo vencer el esquema: Un usuario rooteado necesitaría extraer el .apk de su dispositivo, descomprimir el apk, aplicar ingeniería inversa a los archivos .dex, luego averiguar el algoritmo de cifrado, extraer la clave privada y descifrar el video. Alternativamente, es posible que los teléfonos rooteados falsifiquen la identificación del dispositivo, lo que hará que su programa produzca una clave privada coincidente; esto requiere que los usuarios no autorizados estén enraizados. Este esquema no es infalible, sin embargo, a menos que su contenido sea realmente tan valioso, los crackers probablemente no se tomarían la molestia de aplicar ingeniería inversa a su apk.

Códec cifrado

Si realmente necesita un esquema verdaderamente seguro, querrá usar un códec que tenga encriptación incorporada. De esa manera, los crackers tendrían que volver a codificar el video, a costa de la pérdida de calidad, o usar un reproductor especial, lo que desalentaría a las personas a reproducir el video.

Respondido el 20 de junio de 20 a las 12:06

Muchas gracias por estas claras informaciones. Pero no tengo conocimientos sobre cifrado. Creo que los descargaré de Internet y luego los esconderé un poco, pero necesito encontrar un lugar que no sea accesible para el teléfono no rooteado al menos. - Trox

@Trox: esa área de almacenamiento privada sería la memoria interna, sin embargo, si una aplicación de reproducción de video ocupa 50 MB de mi memoria interna; eso sería una desinstalación. Utilice la SD para archivos grandes o se le desinstalará. - Mentira ryan

¿Y hay alguna carpeta que no sea visible para el teléfono no rooteado en la tarjeta SD? - Trox

@Trox: no, no lo hay; la tarjeta SD se puede formatear como cualquier sistema de archivos que admita Linux y diferentes fabricantes utilizan diferentes sistemas de archivos predeterminados para SD; algunos de esos sistemas de archivos (por ejemplo, FAT o RFS) no admiten la restricción de acceso. Alternativamente, simplemente use un algoritmo de cifrado simétrico. No es tan seguro como usar el algoritmo de cifrado de clave pública (también conocido como cifrado asimétrico), pero es mucho más sencillo de usar (como en, simplemente pase el flujo del archivo a una API). - Mentira ryan

Muchas gracias, intentaré aprender a hacer cifrado simétrico. - Trox

No, no puedes hacer eso. Deberías poner tus videos en línea en algún lugar. No tiene que ser YouTube, puede ser un servicio que usted mismo aloja.

Además, incluso si pusiera los videos dentro de su aplicación, aún sería muy fácil para sus usuarios copiarlos y subirlos a YouTube, por lo que probablemente no ganaría nada de todos modos.

Respondido el 08 de enero de 11 a las 19:01

Si están en la APK, primero tienes que conseguirlo (que no es del todo fácil desde el mercado de Android) y luego abrirlo para obtener los videos. ¡Si los descarga de la web, tiene un archivo que es totalmente accesible en su tarjeta SD! En este caso, necesitaría encriptarlos para que mi aplicación sea la única que pueda leerlos. Pero no creo que sea posible :(. - Trox

@Trox: llegar al .apk es trivial si estás arraigado; simplemente está ahí en un buen directorio para extraerlo - Mentira ryan

Para los videojuegos no es un problema ya que sus datos solo los pueden usar ellos, pero para los videos ... :( ¿Alguna idea? - Trox

@Trox: Solo Digital XNUMXk persona tiene que descargar los videos del mercado. Luego, pueden subir una copia de los videos a YouTube y todos los demás pueden verlos allí. Y la criptografía no ayudará porque tienes que dar la clave secreta a tus usuarios para que puedan ver el video. Cuando les das tus secretos a tus oponentes, ya no son secretos. Me concentraría en intentar hacer una buena aplicación que la gente quieres para descargar en lugar de librar una batalla DRM contra sus usuarios. - Mark Byers

@Lie Ryan: De hecho, es fácil, pero tienes que estar rooteado, luego tomar el apk y extraerlo. No quiero que mi aplicación sea imposible de piratear, pero solo quiero ser un poco disuasorio. Porque si el archivo está solo en su tarjeta SD listo para ser tomado, ¡incluso los que no son piratas informáticos se sentirán tentados! - Trox

Ofuscaría la dirección o haría que los videos solo fueran accesibles después de la autenticación.

Respondido el 08 de enero de 11 a las 19:01

Cuando dice "accesible después de la autenticación", significa que los videos están en Internet. Me gustaría que los usuarios no tuvieran siempre acceso a Internet. Así que los descargaría la primera vez que se lanzara mi aplicación y luego los almacenaría en el teléfono. La cuestión es ocultar al menos un poco la ubicación del archivo o protegerlo, pero no tengo experiencia con el cifrado. - Trox

¿Cómo ofuscarías la dirección? ¿Hay una ubicación en la tarjeta SD y el teléfono solo accesible para teléfonos rooteados? - Trox

@Trox: hay 5 lugares de almacenamiento disponibles para cualquier aplicación no rooteada: developer.android.com/guide/topics/data/data-storage.html - Mentira ryan

@Lie Ryan: El problema es que el almacenamiento interno es privado pero para archivos pequeños, mientras que el almacenamiento externo es para archivos grandes pero es público. ¿Hay alguna forma de ocultar al menos un archivo o una carpeta para teléfonos no rooteados? ¿O un lugar especial? Gracias. - Trox

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.