2012-01-12 59 views
4

我的公司正在向我們的客戶分發硬件(三星Galaxy Tab 10.1)和軟件(我的應用程序)。是否可以通過adb安裝應用程序,但仍然可以獲得Google Market更新?

我的意圖是「跳過」谷歌帳戶鏈接並使用adb將我的生產簽名應用程序直接安裝到平板電腦上(與apk上傳到谷歌市場相同)。這將允許我爲我們的客戶預先配置平板電腦,將屏幕背景更改爲我們的徽標等。

但是,一旦平板電腦已交付給客戶,我希望他們將Google帳戶附加到該平板電腦,並仍然能夠通過市場從我的應用程序獲取更新。在我的測試中,手動安裝的應用程序從未出現在谷歌市場的應用程序列表中。

這可能嗎?

更新:我結束了寫「啓動器」的應用程序,我將手動安裝到設備上。它的主題是一個活動:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 

的活動有此代碼:

public class LauncherActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.main); 
    startApplication("applicationnamehere"); 
    finish(); // this kills the activity immediately. 
} 

public void startApplication(String application_name){ 

    boolean successfulLaunch = false; 
    try{ 
     Intent intent = new Intent("android.intent.action.MAIN"); 
     intent.addCategory("android.intent.category.LAUNCHER"); 

     intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
     List<ResolveInfo> resolveinfo_list = getPackageManager().queryIntentActivities(intent, 0); 

     for(ResolveInfo info:resolveinfo_list){ 
      if(info.activityInfo.packageName.equalsIgnoreCase(application_name)){ 


       Intent launch_intent = new Intent("android.intent.action.MAIN"); 
       launch_intent.addCategory("android.intent.category.LAUNCHER"); 
       launch_intent.setComponent(new ComponentName(info.activityInfo.packageName, info.activityInfo.name)); 
       launch_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(launch_intent); 
       successfulLaunch = true; 
       break; 
      } 
     } 
    } 
    catch (ActivityNotFoundException e) { 
     launchMarket(); 

    } 

    if (!successfulLaunch) 
     launchMarket(); 
} 

private void launchMarket() { 
    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setData(Uri.parse("market://details?id=packagenamegoeshere")); 
    startActivity(intent); 
} 

}

可以東西常量到的strings.xml。

它唯一的問題是,即使在我的主應用程序已經被用戶安裝後,它仍然在主屏幕上掛起。由於它(默認情況下)試圖爲我的應用程序啓動LAUNCHER,因此它不是世界末日。

+0

在「live」之前測試它是不是可能的? – mbanzon 2012-01-12 22:00:33

+0

@mbanzon這就是我現在正在做的事情。 – knaak 2012-01-13 12:58:33

+0

請報告你的發現。 – mbanzon 2012-01-13 15:08:55

回答

0

這是可能的。證明:大多數手機都提供有YouTube,Twitter,Facebook和其他應用程序,這些應用程序可以通過Market進行更新。

+0

這是我最初的想法,除了在工廠映像過程中,他們可以訪問數據庫和目錄,只有在設備根目錄時纔可用。對? – knaak 2012-01-13 12:58:00

3

應該可以 - 查看Titanium Backup的功能。它具有市場博士功能,可以在您使用Titanium備份還原文件和數據文件後重新建立與Android電子市場的鏈接。

您也可以嘗試加載出廠映像到一些手機或平板電腦,跳過帳戶創建過程,並看到了市場數據庫的樣子所包含的應用程序,如YouTube和Facebook,Gmail,地圖等

+0

感謝Market Doctor的小費。我會檢查一下。 – knaak 2012-01-13 12:57:19

+0

這是我認爲市場醫生必須依賴根訪問權的假設/信念。我沒有發現任何地方可以將手動安裝的應用程序「鏈接」到市場帳戶,而不必擁有憑據。 – knaak 2012-01-17 15:11:10

1

在我的測試中,我手動安裝該應用程序一直沒有出現在應用程序在谷歌電子市場

名單這是因爲你沒有在Android Market發佈的應用程序。

這可能嗎?

只要您使用相同的軟件包名稱,在AndroidManifest.xml中正確維護版本增量並使用相同的密鑰庫進行簽名。在哪裏以及如何獲得最新的apk無所謂,這將觸發升級。

從官方開發指南簽出Signing Strategies - Application upgrade

+0

它在市場上有相同的簽名密鑰,軟件包名稱等.Jinkins構建我們的發行版,並且我只是從jenkins發佈文件夾(我們將上傳到市場的那個文件夾)手動推送apk。但是,即使清單版本在市場上是100,而在手動安裝的apk中是99,該應用程序也不會顯示在「我的應用程序」中。 – knaak 2012-01-13 12:56:02

1

我發現,我將通過亞行安裝,如果滿足下列條件後得到的應用程序更新: 1相同的包名 在AndroidManifest.xml亞行版本<版本代碼Play商店版本指定版本2碼 3 。用於簽署兩個apk的相同密鑰

相關問題