注目キーワード

ADB経由でAndroidアプリをインストール中「INSTALL_FAILED_DUPLICATE_PERMISSION」エラー出たときの2つの対処方法

 

ADB経由でAndroidアプリ(apkファイル。以下、アプリ略す)をAndroid端末にインストールしていたら以下のようなエラーが出ました。

 

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=アプリのパッケージ名.permission.C2D_MESSAGE pkg=アプリのパッケージ名]

 

 

ネットの記事を見る限りでは、AndroidManifest.xmlファイルの「アプリのパッケージ名」を「${applicationId}」に置き換える方法が解説されていますが、実はその方法では解決しないことがありました。

 

今回は、「INSTALL_FAILED_DUPLICATE_PERMISSION」エラーが出たときの2つの解消方法を解説します。

 

 

解消方法1・パッケージ名の重複を修正する

 

おそらくネット上で「ADB INSTALL_FAILED_DUPLICATE_PERMISSION」で検索すると、次のような解決方法が沢山出てくるかと思います。

 

 

■パッケージ名の部分を「${applicationId}」に置き換える。

以下のようなエラーが出たら、

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=アプリのパッケージ名.permission.C2D_MESSAGE pkg=アプリのパッケージ名]

 

エラーの内容から、「同じアプリを2つ以上インストールできませんよ」と言っているようです。

 

このようなときは、AndroidManifest.xmlのパッケージ部分(以下の例だと「your.pkg」の部分)を

${applicationId}に置き換えることで解決します。

 

 

■変更前
<permission
    android:name="your.pkg.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="your.pkg.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />


■変更後
<permission
    android:name="${applicationId}.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

 

 

しかし、私の場合は解決しませんでした。

解決しない場合は、次の解消方法で解決する可能性があります。

 

 

解決方法2・ゲストユーザがアプリをインストールしていた

 

私が使っていた端末は、ASUSの「ZenFone_2_ZE551ML」ですが、この端末は、実はMacやWindowsのように複数のアカウント(オーナーユーザ、ゲストユーザのような感じ)を作って使うことができます。

 

私は、ADB経由でアプリをインストールするとき、オーナーユーザとして端末を使っていたのですが、なぜかゲストユーザ側にアプリがインストールされていました。

 

つまり以下の状態になっていました

・オーナーユーザ

 アプリのインストールなし

・ゲストユーザ

 アプリのインストールあり

 

ゲストユーザ側にアプリが存在していたため、「INSTALL_FAILED_DUPLICATE_PERMISSION」エラーが発生したのです。

よって、ゲストユーザ側にあるアプリを消したら無事にアプリをインストールできるようになりました。

 

意外に、はまりました。

この不具合のために無駄にした時間は2時間。

 

 

まとめ

 

まさか、1つの端末に自分以外のユーザがアプリをインストールしているとは思いませんでした。もし、エラーメッセージの通りに解消しているのに、うまく動かなかったら自分以外のユーザの存在を疑っても良いかもしれません。

 

1人では解決できない問題が発生したら詳しい人に相談してみよう【タイムチケット】