62

アプリケーションのベータ版を作成しました。Webからダウンロードできます(Playマーケットには公開しません)。新しいバージョンがリリースされるときに、Playマーケットにアクセスせずにこのアプリケーションを更新することは可能ですか?

4

5 に答える 5

87

絶対。ただし、アプリがサーバーにホームコールするためのメカニズムを構築する必要があります。新しいバージョンのアプリがあるかどうかを確認し、ある場合は、アプリをプルダウンしてインストールします。更新をプルダウンする必要があると判断したら、次の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);
}
于 2013-03-04T23:50:10.423 に答える
15

はい、可能です。おおまかにできることは次のとおりです。

  1. 現在のアプリケーションのversionCodeを取得します

    PackageInfo packageInfo = getPackageManager().getPackageInfo(context.getPackageName(), 0);
    int curVersionCode = packageInfo.versionCode;
    
  2. apkファイルをホストするサーバーを用意し、最新のアプリケーションバージョンコードを表す整数を1つだけ含む単純なプレーンファイルを作成します。

  3. アプリが起動したら(または更新を確認するときはいつでも)、サーバーから(つまり、HTTPリクエストを介して)最新のversionCodeを取得し、現在のアプリのバージョンと比較します。

  4. 新しいバージョンがある場合は、apkをダウンロードしてインストールします(ユーザーにダイアログが表示されます)。

編集:

これには@Blumerのコードを使用できます。

于 2013-03-04T23:53:19.467 に答える
7

可能ですが、ユーザーは設定で「非マーケットアプリケーション/不明なソースのインストールを許可する」を有効にする必要があることに注意してください。

于 2014-11-25T23:02:39.890 に答える
3

参考までに、これについてはhttp://blog.vivekpanyam.com/evolve-seamlessly-deploy-android-apps-to-users/?hnで読んだばかりです。

Evolveは、Androidデベロッパー向けのライブラリであり、Google Playを経由したり、ユーザーにアップデートのダウンロードを依頼したりすることなく、アプリの新しいバージョンをデプロイできます。これは、リフレクションと動的バイトコード生成を使用して、Androidを「だまして」新しいコードを実行させることで機能します。

そのアルファは、しかし、それは多くのフープを介して可能であるようです。悪意のあるソフトウェアを除いて、その価値があるかどうかは疑問です。

于 2014-02-19T11:00:41.343 に答える
1

アプリ内アップデートの公式サポート/ライブラリGooglePlayコア

  • アプリ内アップデートは、アクティブユーザーにアプリのアップデートを促すPlayCoreライブラリ機能です。アプリ内アップデート機能は、Android 5.0(APIレベル21)以降を実行しているデバイスでサポートされており、アプリでPlayCoreライブラリバージョン1.5.0以降を使用する必要があります。さらに、アプリ内アップデートは、Androidモバイルデバイス、Androidタブレット、およびChromeOSデバイスでのみサポートされます。

以下は更新フローの種類です

  1. 柔軟な更新(サンプル画面)

ここに画像の説明を入力してください

  1. 即時更新(サンプル画面)

ここに画像の説明を入力してください

参照:-このトピックの詳細

于 2021-07-06T14:16:39.317 に答える