2013-03-04 59 views
27

我正在Android應用程序將共享數據庫。我在這兩個應用程序的清單文件中使用android:sharedUserId。當我嘗試運行該應用程序後添加該sharedUserId它顯示我以下錯誤安慰。INSTALL_FAILED_SHARED_USER_INCOMPATIBLE當使用共享用戶ID

[2013-03-04 19:37:32 - MainActivity] Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 
[2013-03-04 19:37:32 - MainActivity] Please check logcat output for more details. 
[2013-03-04 19:37:32 - MainActivity] Launch canceled! 

請幫我解決這個問題。

+1

您是否使用相同的密鑰簽名了它們? – 2013-03-04 15:34:31

+0

我試圖分配相同的密鑰 但我發現我們可以將密鑰分配給apk只有... 但我想調試這兩個應用程序 – Hemantwagh07 2013-03-04 15:35:38

+0

因此,使用調試密鑰對它們進行簽名。 – 2013-03-04 15:37:45

回答

27

我遵循下列步驟:

  1. 刪除現有的應用程序(如果已經安裝了的話)從Android清單
  2. Bulid應用
  3. 刪除共享用戶ID。
  4. 現在進入分享用戶ID再次
  5. 構建應用程序1更多的時間
+10

共享用戶標識的存在是有原因的。如果您將其刪除,則您的應用程序無法按預期工作,或者共享用戶標識首先不是必需的。要真正解決問題,請卸載使用相同共享ID的其他應用程序,並安裝已構建並簽名的APK與其他應用程序相同。 – spaaarky21 2014-07-28 19:29:25

+0

我試過這種方式,但不適合我。 – Vinodh 2015-04-15 10:50:04

+0

我也是。不爲我工作 – 2015-04-29 17:53:02

1

這意味着一些有關您的應用程序未正確卸載。這個步驟有助於從內部命令強制卸載:

  1. 您的手機有USB
  2. 連接到PC從你的shell啓動:
$ adb shell 
    [email protected]:/ $ su 
    [email protected]:/ # pm list packages | grep <part of package> 
    package:com.android.providers.applications 
    package:com.android.providers.calendar 
    package:com.android.providers.contacts 
    package:com.android.providers.downloads 
    ... 
    [email protected]:/ # pm uninstall <package> 
    [email protected]:/ # exit 
    [email protected]:/ $ exit 
    $ 

基本上,你登錄到Android的外殼,成爲超級用戶,找到有問題的軟件包,並卸載它

+0

任何想法爲什麼'pm'不會在卸載應用程序後終止? – 2016-09-27 20:47:34

+0

也許這是一個系統應用程序。請參閱http://android.stackexchange.com/a/96479/19214 – albfan 2016-09-28 07:18:26

0

在我的情況下,我有兩個構建變體(一個特定的設備,一個一般)。

當這個錯誤出現時,我正在仿真器上運行設備特定的版本。

0

雖然你已經接受了答案,但我也想談談我遇到這個錯誤的情況。我的項目是一個啓動程序,這只是碰巧使用一些系統補助等的Manifest.xml有兩個項目:

<uses-permission android:name="android.permission.STATUS_BAR" /> 
or 
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 

和控制檯註銷:

Error using StatusBarManagerService - java.lang.SecurityException on android.permission.STATUS_BAR 

最後,我的同事用給我一個提示「平臺調試鍵」,我不確定這會適合你,但是對於這種問題,另一個人可能性。 下面的圖片是我的解決方案: screenshot from project structure 您可能還會注意到「簽名配置」的「味道」和「構建類型」,您可以選擇「簽名」的「名稱:」。

0

我做了一個稍微不同的方法。

我的工作涉及使用經過修改的Android操作系統以及經過修改的adb工具。我正在處理的應用(app1)與另一個應用(app2)由另一個團隊「共享用戶」。爲了讓我能獲得Android Studio調試工作,我只好按照順序執行這些步驟:

  1. 使用Build(從Android Studio中菜單) - >生成簽名APK
  2. 打造的調試版本APK(應用1)與(應用和應用2)
  3. 利用亞行所使用的密鑰存儲信息,以卸載以前的APK
  4. 利用亞行安裝簽名的調試APK
  5. 利用亞行啓動在調試模式下的應用
  6. 連接Android梭哈io調試器到應用程序
0

在我的情況下,這兩個應用程序簽署了不同的簽名。使用相同的簽名修復我的問題