Intereting Posts
Как сохранить / исключить определенный путь пакета при использовании proguard? Получение имени и электронной почты из списка контактов очень медленно Android inapp-billing – узнать версию API Обновление Android Studio Gradle до версии 0.5.0 – Gradle Migrating От 0,8 до 0,9 – Также обновление для Android Studio до 0.8.1 Скрытые фрагменты backstack, повторно отображаемые при изменении конфигурации Android – Какой смысл делать домашняя кнопка? Чем отличается getContext и getActivity от Fragment в библиотеке поддержки? Android: CollapsingToolbarLayout и SwipeRefreshLayout застряли Есть ли способ безопасно хранить данные пользователя на устройстве Android? Андроид Wi-Fi разрешение Может ли папка Android Layout содержать подпапки? Как отображать карту в android с маркером Как полностью предотвратить прокрутку TextView? Как использовать учетные записи Google в качестве логина Как уменьшить время, затрачиваемое MPAndroidChart для отображения данных?

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

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

Solutions Collecting From Web of "Обновите приложение для Android (без Google Play)"

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

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

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

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

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

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

Редактировать:

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

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

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

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

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