Подтвердить что ты не робот

Обновите приложение для Android (без Google Play)

Я написал бета-версию приложения. Он будет доступен для загрузки через Интернет (я не буду публиковать его на Play Market). Возможно ли обновить это приложение без Play Market, когда новая версия будет выпущена?

4b9b3361

Ответ 1

Совершенно верно. Вам нужно будет создать механизм, хотя для вашего приложения, чтобы позвонить домой на сервер, узнайте, есть ли более новая версия приложения, а если есть, вытащите его и установите. Как только вы определили, что вам нужно снять обновление, вы можете сделать это с чем-то похожим на эту 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);
}

Ответ 2

Да, возможно, вот примерно то, что вы можете сделать:

  • Получить текущее приложение versionCode

    PackageInfo packageInfo = getPackageManager().getPackageInfo(context.getPackageName(), 0);
    int curVersionCode = packageInfo.versionCode;
    
  • Имейте сервер, на котором вы размещаете файл apk и создаете простой простой файл, содержащий только одно целое число, которое представляет собой последний код версии приложения.

  • Когда приложение запускается (или когда вы хотите проверить обновление), извлеките последний код версии с сервера (т.е. через HTTP-запрос) и сравните его с текущей версией приложения.

  • Если есть новая версия, загрузите apk и установите его (выведет диалоговое окно для пользователя).

Edit:

Для этого можно использовать код @Blumer.

Ответ 3

возможно, однако имейте в виду, что пользователь должен будет иметь "Разрешить установку нерыночных приложений/неизвестных источников" в свои настройки.

Ответ 4

FYI, я просто прочитал об этом в http://blog.vivekpanyam.com/evolve-seamlessly-deploy-android-apps-to-users/?hn

Evolve - это библиотека для разработчиков Android, которая позволяет им развертывать новые версии приложения, не просматривая Google Play и не спрашивая пользователей. для загрузки обновления. Он работает, используя отражение и динамику генерация байт-кода для "трюка" Android в запуск нового кода.

Его альфа, хотя, кажется, это возможно через множество обручей. Я сомневаюсь, что это стоит, за исключением вредоносного программного обеспечения.