Error en App auto actualizable

22 views
Skip to first unread message

Alvaro Carreño

unread,
Oct 6, 2016, 1:51:38 PM10/6/16
to desarrolladores-android

Saludos compañeros, mi aplicacion no esta en la tienda de Google, por lo que tengo este codigo para descargar un archivo .apk desde un WebService que seria la nueva versión de la app e instalarlo, pero tengo un error al momento de realizar la instalación: "Error de Analisis Se ha producido un error durante el analisis del paquete"

El archivo se descarga bien, si ejecuto el archivo desde la ubicacion de descarga "downloads" puedo instalar la app pero quiero que se instale una vez terminada la descarga desde la misma app en ejecución, gracias por sus comentarios.


try {
       

        String ruta="http://webService/appnueva.apk";

        URL obj
= new URL(ruta);
       
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        con
.setRequestMethod("GET");
        con
.setDoOutput(true);
        con
.connect();

       
File PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
       

        File archivo = new File(PATH,"archivo.apk");

       
FileOutputStream fileOutput = new FileOutputStream(archivo);
       
InputStream inputStream = con.getInputStream();

       
//obtendremos el tamaño del archivo y lo asociaremos a una
        //variable de tipo entero
        int totalSize = con.getContentLength();
       
int downloadedSize = 0;

       
byte[] buffer = new byte[1024];
       
int bufferLength = 0;

       
while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
            downloadedSize
+= bufferLength;
            fileOutput
.write(buffer, 0, bufferLength);
       
}

        fileOutput
.close();
        inputStream
.close();

       
//aca el codigo para instalar el archivo descargado
       
//el archivo esta bien completo el problema es cuando se intenta
       
//instalar desde aca y da el error de analisis del paquete
       
Intent intent = new Intent(Intent.ACTION_VIEW);
        intent
.setDataAndType(Uri.fromFile(new File(Environment.getExternalStoragePublicDirectory(
               
Environment.DIRECTORY_DOWNLOADS) + "archivo.apk")),
               
"application/vnd.android.package-archive");
        intent
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       
contexto.startActivity(intent);

        texto
="000";
   
}
   
catch (Exception e) {
       
//texto= e.toString();
        Log.v("Error ALVARO ",e.toString());
        texto
="0001";
   
}
   
return texto;
}


Gabriel Pozo

unread,
Oct 6, 2016, 4:12:53 PM10/6/16
to desarrolladores-android

Desde mi smartphone me cuesta un poco leer código, pero lo más importante es que nos pases un salida completa del logcat, cuando se produce un error


--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/36cc7297-410e-43b4-95bd-9dc0330c0cc6%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Martin

unread,
Oct 7, 2016, 12:09:18 PM10/7/16
to desarrolladores-android
Buenas, es necesario ver el logcat pero el try catch no lo dejara ver bien sino pones dentro un printStackTrace o similar, tambien sera bueno saber que versión de android usas sobre todo si se trata de Android N porque hay muchos cambios.

por ejemplo, dentro del try...catch usar:

Log.e(TAG, "Exception: "+Log.getStackTraceString(e));

Saludos!

Gabriel Pozo

unread,
Oct 7, 2016, 1:20:04 PM10/7/16
to desarrolladores-android

Escribí sobre eso que comenta Martín hace un tiempo, para no tener que explicar lo mismo siempre. 😁
http://www.aprendiendodeandroidymas.com/2013/11/como-puedo-usar-el-logcat-para-ayudarme.html?m=1


--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.

Alvaro Carreño

unread,
Oct 10, 2016, 9:50:43 AM10/10/16
to desarrolladores-android
Gracias a todos por sus comentarios, no existe error en el LogCat que me identifique el error ya lo he buscado!, En el emulador no puedo probar porque me da un error de permiso denegado, tengo entendido que es por la firma que android crea cuando se instala una app en el emulador la cual es diferente cuando se instala en un device fisico, por lo que estoy haciendo pruebas desde un device fisico el cual tiene Android 4.4.2 , tambien se de los nuevos permisos en android N pero no es mi caso, el problema esta cuando el S.O intenta instalar la app descargada desde la misma app (en la descarga no hay un error) y el error es cuando analiza el paquete! (tengo permitido instalar app de terceros en el device) pero si busco el archivo descargado por el administrador de archivos y lo instalo ahi si funciona todo bien.  Bueno una vez mas gracias por sus comentarios queria saber si alguien ha intentado hacer lo que yo quiero y conocer su experiencia..

Gabriel Pozo

unread,
Oct 10, 2016, 12:41:59 PM10/10/16
to desarrolladores-android
Tenes un error, y el logcat no muestra nada? Eso no lo vi en 8 años haciendo cosas con Android :D


--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.

Martin

unread,
Oct 11, 2016, 8:00:05 AM10/11/16
to desarrolladores-android
>>  ...no existe error en el LogCat...
Ojo, si el error esta dentro de un bloque de codigo try ..catch no lo vas ver nunca si no mandas a imprimir el stacktrace, es casi imposible que no haya salida en el logcat cuando ocurre un error


>> tengo entendido que es por la firma que android crea cuando se instala una app en el emulador la cual es diferente cuando se instala en un device fisico
Creo que eso es incorrecto, yo ejecuto el mismo apk, en modo debug tanto en emulador como en device fisico, el tema esta cuando tenes un apk en modo debug, y depues le queres sobreinstalar la version en modo release con tu propia firma y sin antes haber desinstalado el apk debug

Para mi, tu problema puede venir porque tu apk se esta ejecutando, es decir al estar en uso no se puede "pisar", (reinstalar)  tambien asegurate de no mezclar versiones del apk firmado con la firma por defecto (modo debug) y la del modo release, asi como tambien que no se haya cambiado el nombre del package
Reply all
Reply to author
Forward
0 new messages