Actualizar una aplicación de Android (sin Google Play)

Escribí una versión Beta de la aplicación. Estará disponible para su descarga a través de la web (no lo publicaré en el Play Market). ¿Es posible actualizar esta aplicación sin Play Market cuando se lanzará la nueva versión?

Absolutamente. Sin embargo, necesitará crear un mecanismo para que la aplicación llame a su casa al servidor, averigüe si hay una versión más reciente de la aplicación y, en caso afirmativo, bájela e instálela. Una vez que haya determinado que tiene que bajar una actualización, puede hacerlo con algo similar a este AsyncTask:

protected String doInBackground(String... sUrl) { String path = "/sdcard/YourApp.apk"; try { URL url = new URL(sUrl[0]); URLConnection connection = url.openConnection(); connection.connect(); int fileLength = connection.getContentLength(); // download the file InputStream input = new BufferedInputStream(url.openStream()); OutputStream output = new FileOutputStream(path); byte data[] = new byte[1024]; long total = 0; int count; while ((count = input.read(data)) != -1) { total += count; publishProgress((int) (total * 100 / fileLength)); output.write(data, 0, count); } output.flush(); output.close(); input.close(); } catch (Exception e) { Log.e("YourApp", "Well that didn't work out so well..."); Log.e("YourApp", e.getMessage()); } return path; } // begin the installation by opening the resulting file @Override protected void onPostExecute(String path) { Intent i = new Intent(); i.setAction(Intent.ACTION_VIEW); i.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive" ); Log.d("Lofting", "About to install new .apk"); this.context.startActivity(i); } 

Sí, es posible, aquí es más o menos lo que puede hacer:

  1. Obtener el código de versión actual de la aplicación

     PackageInfo packageInfo = getPackageManager().getPackageInfo(context.getPackageName(), 0); int curVersionCode = packageInfo.versionCode; 
  2. Disponga de un servidor en el que hospede el archivo apk y cree un archivo sencillo que contenga sólo un entero, que representa el código de versión de la aplicación más reciente.

  3. Cuando empiece la aplicación (o cuando quiera buscar una actualización), recupere el último versionCode del servidor (es decir, a través de una solicitud HTTP) y compárelo con la versión actual de la aplicación.

  4. Si hay una nueva versión, descargue el apk e instálelo (le pedirá un diálogo para el usuario).

Editar:

Puede utilizar el código de @Blumer para esto.

Es posible, sin embargo tenga en cuenta que el usuario tendrá que tener "Permitir la instalación de aplicaciones no-mercado / fuentes desconocidas" habilitado en su configuración.

FYI, acabo de leer sobre esto en http://blog.vivekpanyam.com/evolve-seamlessly-deploy-android-apps-to-users/?hn

Evolve es una biblioteca para desarrolladores de Android que les permite implementar nuevas versiones de una aplicación sin pasar por Google Play ni pedirle a los usuarios que descarguen una actualización. Funciona mediante la reflexión y generación de bytecode dinámico para "engañar" a Android en la ejecución de nuevo código.

Su alfa sin embargo, pero parece posible a través de un montón de aros. Dudo que valga la pena excepto por software malicioso ..

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.