0

ここでこれについて多くの質問があることは知っていますが、私はすべてを試しました (しかし、明らかに正しい「もの」です!)、私が抱えている問題に光を当てるものは何もないようです.

独自のサーバーでホストされるように設計された (顧客向けの) アプリを作成しました。アプリは、最新バージョン コードを含む単純なテキスト ファイルを参照し、それを独自のバージョンと照合します。古い場合はオフになり、更新をダウンロードします。この時点まで、すべてが意図したとおりに機能しています。

私は以下を使用します:

Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(outputFile), "application/vnd.android.package-archive");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

...新しくダウンロードした .apk ファイルのインストール プロセスを開始するコード。そして、それはすべて私の期待どおりに始まります。

「インストール」をクリックします-現在のアプリを新しいアプリで上書きすることを確認するように求められたら。起動し、次のように表示されます。

App not installed. And existing package by the same name with a conflicting signature is already installed.

今、私は Android が同じパッケージ名を共有する複数のアプリケーションを持つことができないことを認識していますが、これは問題ありませんが、LogCat には何も表示されません。私はすべての正しいチャネルを通過し、組み込みのパッケージマネージャーを使用してそれを実行しています!

OSがうめき声を上げていることを誰か教えてもらえますか? 2 つのアプリを並べてインストールしようとしているわけではありません。更新したいのですが、更新を開始すると、本当に混乱します。

パッケージの署名に同じキーストアを使用していることに関係がありますか? 以前に同じキーストアを使用してゲームなどの更新を処理したことがあるとは思えませんが、それが何について不平を言っているのかわかりません。

うまくいけば、誰かがこの問題を抱えて解決し、私を正しい方向に向けることができます. 私はそれが私に与えている限られた情報で少し盲目的に飛んでいます:(

乾杯。

4

1 に答える 1

3

異なる署名キーを使用して新しいバージョンと古いバージョンを構築しました。おそらく、異なるマシンでそれらを構築したか、1 つがデバッグ証明書で、もう 1 つがリリース証明書です。これが発生した場合、通常、別の証明書を使用して新しいバージョンをインストールする前に、手動で明示的に古いバージョンを削除する必要があります。これは基本的に、トロイの木馬化された偽の更新プログラムを誤ってインストールすることに対する安全対策です。

ビルド マシン間で証明書を移動できることに注意してください (コードベースを顧客に引き渡す場合は移動が必要になる場合があります) が、その際は注意が必要です。

于 2013-10-29T15:52:07.897 に答える