2012-01-12 9 views
4

私の会社は、お客様にハードウェア(samsung galaxy tab 10.1)とソフトウェア(私のアプリケーション)の両方を配布しています。adb経由でアプリケーションをインストールすることはできますが、Googleマーケットのアップデートは引き続き入手できますか?

Googleアカウントのリンクをスキップしてadbを使用して、本番用の署名付きアプリケーションをタブレットに直接インストールすることです(googleマーケットにアップロードするapkと同じです)。これにより、顧客のためにタブレットを事前設定したり、画面の背景をロゴなどに変更したりすることができます。

しかし、タブレットが顧客に届けられたら、Googleアカウントを添付してタブレットを使用していても、市場からアプリケーションからアップデートを受け取ることができます。私のテストでは、手動でインストールしたアプリケーションは、Googleマーケットのアプリケーションのリストに表示されることはありません。

これは可能ですか?

ティム

UPDATE:私は手動でデバイスにインストールされます「ランチャー」アプリケーションを書くことになりました。それはテーマに1つの活性を有する:

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

"ライブ"に行く前にこれをテストすることはできませんか? – mbanzon

+0

@mbanzonこれは私が今やっていることです。 – knaak

+0

あなたの調査結果を報告してください。 – mbanzon

答えて

0

可能です。証明:携帯電話のほとんどはYouTube、Twitter、Facebookなどのアプリケーションで提供されており、これらのアプリケーションはMarket経由で更新することができます。

+0

これは私の最初の考えでしたが、工場イメージプロセスでは、あなたのデバイスをルートしている場合にのみデータベースとディレクトリにアクセスできます。右? – knaak

3

これは可能なはずです - チタニウムバックアップが何をしているかを見てください。これには、Titanium Backupを使用してapkとデータファイルを復元した後、Androidマーケットへのリンクを再確立できるMarket Doctor機能があります。

また、アカウント作成プロセスをスキップして、Youtube、Facebook、Gmail、マップなどの付属のアプリの外観を確認することもできます。

私のテストで
+0

Market Doctorのヒントをありがとう。私はそれをチェックします。 – knaak

+0

マーケット・ドクターがルート・アクセスに依存しなければならないと私は仮定しています。私は資格情報を持っていないときに手動でインストールされたアプリケーションをマーケットアカウントに「リンク」するための参照がどこにもないことを発見しました。 – knaak

1

、私は手動でインストールされたアプリケーションは、Androidマーケットでのアプリを公開していなかったので、これは、Googleの市場でのアプリケーションのリストに

を示したことがありません。

これは可能ですか?

同じパッケージ名を使用している限り、AndroidManifest.xmlにバージョンを正しく更新し、同じキーストアで署名してください。どこでどのように最新のAPKを取得するのが問題ではない、それはアップグレードを引き起こすでしょう。

公式の開発ガイドからSigning Strategies - Application upgradeをチェックアウトしてください。

+0

これは同じ署名鍵、パッケージ名などで市場に出ています。ジェンキンスは私たちのリリースをビルドしています。私は手動でジェンキンスのリリースフォルダからapkをプッシュしました。しかし、マニフェストバージョンが市場で100であり、手動でインストールされたAPKで99であっても、アプリケーションは「My Apps」に表示されません。 – knaak

1

私は、次の基準を満たしている場合、ADB経由のインストール後にアプリケーションのアップデートを取得することを見出した:AndroidManifest.xmlをADBバージョン<バージョンのコードプレイストアのバージョンで指定された 1.同じパッケージ名 2.バージョンコード 3 。両方のapkに署名するのに使用された同じキー

関連する問題