¿Puede un APK ser reempaquetado después de una edición de texto menor?
Estoy creando un software que guiará al usuario a través de unos pocos pasos, para publicar una aplicación de Android (archivo APK).
La forma en que estoy haciendo esto, es que el archivo APK ya está compilado, y todo lo que necesito hacer es reemplazar un archivo XML en el paquete, y eso cambiará el comportamiento de la aplicación. Mi gran problema ahora, es que desempaquetar el archivo apk, y hacer cualquier pequeña edición de texto, y luego embalar de nuevo, rompe la firma y evita que la aplicación se ejecute en cualquier dispositivo, dando un mensaje de que la firma es incorrecta.
- ¿Hay alguna referencia / documentación del navegador de Android?
- Forzar una actualización en una aplicación móvil híbrida
- Cómo obtener una matriz String con código java de la lista <string-item> en arrays.xml en Android?
- Comprender la "máquina de radio" de Android para mejorar la duración de la batería
- Copia al portapapeles en jquery / javascript sin flash para ipad / iphone
¿Como puedo resolver esto? Quiero abrir el APK con seguridad, escribir algo en un archivo de texto y cerrarlo de nuevo. Tenga en cuenta que esta operación se realizará en la computadora del usuario (después de que él compre nuestra aplicación) por lo que estamos buscando una herramienta de línea de comandos sin requerimientos especiales como JDK.
¿Alguna ayuda?
- ¿Cómo generar enlace waze meetup con fallback web?
- Cómo implementar la aplicación Phonegap en el iPhone sin tener hardware de Apple (iPhone + Mac)
- ¿Cómo usar la conexión de datos en lugar de WIFI cuando ambos están habilitados?
- Error de conexión de Web Socket desde el cliente Android
- Android / javascript - problema con window.innerWidth y window orientationEvent disparando en el momento adecuado
- Cargador de clases personalizado para android?
- ¿Cuáles son las ventajas del lenguaje de programación Kotlin?
- ¿Habilitar la tarjeta SD durante la depuración USB?
Ok llegué a la mejor solución "probada": la publicaré aquí para guardar otras horas de desarrollo de google. El único inconveniente es que voy a requerir al cliente para instalar JDK en su máquina, por desgracia. La razón es porque no encontré ninguna herramienta de firma apk que funcione puramente en Windows, sin depender de JDK.
Tengo mi aplicación Android creada con Air, por lo que esto hace las cosas fáciles para mí – todos los archivos de aire se tratan como recursos de recursos. Así que tiene su archivo de archivo APK listo.
Una vez que tenga sus modificaciones listas, póngalas dentro de una carpeta temporal denominada "assets". Utilizará la herramienta de línea de comandos 7-zip (gratuita: http://sourceforge.net/projects/sevenzip/ ) para actualizar el contenido de su apk. Para que funcione con su apk tendrá que cambiar el nombre de la extensión de su apk a zip – no se preocupe, lo volverá a cambiar más tarde.
Ahora desde un archivo .bat (o directamente en el símbolo del sistema) desde la ubicación que contiene tanto el archivo apk (zip extendido) como la carpeta de activos, llamará a: 7za u APK-file.zip assets
Ahora su archivo apk se actualiza. Cambiar el nombre a la extensión .apk
Ahora utilice la herramienta signAPK desde aquí https://code.google.com/p/signapk/ y tenga en cuenta que este es el único paso que requiere JDK instalado. También asume que usted tiene sus archivos llave listos (substituya los maniquíes incluidos en el paquete). Extraiga el contenido del archivo y llame a: java -jar signapk.jar key.x509.pem key.pk8 [android_app] .apk [signed_android_app] .apk
Al final, puede encontrar el tamaño de archivo firmado apk drammaticamente aumentado. Así que necesitas usar la herramienta zipAlign del android: (darn, no puedes publicar el enlace ya que los nuevos usuarios solo pueden publicar un máximo de dos hipervínculos) llamarás al comando: zipAlign -c 4 [signed_android_app] .apk
Y voila! Esa es la ruta que estoy tomando.
Si alguien encuentra una manera de hacer el proceso de firma sin depender de JDK (suponiendo que los archivos de claves estén listos) por favor comparta.
¿Como puedo resolver esto?
No lo haces. Si modifica un archivo APK, por cualquier medio, debe volver a firmarlo.
Los archivos apk de Android deben estar firmados. Esa firma demuestra que el contenido del apk NO HA SIDO MODIFICADO de lo que fue publicado inicialmente. (Que es exactamente lo que está haciendo.) La firma, al mismo tiempo, también demuestra quién es el autor.
Así que en un archivo apk firmado normal:
- Sabes quién es el autor. (Incluso si no es algo que usted como un humano puede entender.)
- Usted sabe que el contenido fue puesto allí por el autor, y no modificado desde entonces.
Esta es una medida de seguridad clave construida en Android, existe por muy buena razón, y no puede ser superado. Evita que las cosas como los virus se incrusten dentro de archivos apk inocentes.
- ShareActionProvider para el nivel de API inferior a 14
- ¿Cómo actualizar ListView al desplazarse mientras recupera datos del servidor en Android?