0

同じソースに基づいて複数のapkファイルを作成したいので、私のデバイス上に作業用と開発用のバージョンを用意することができます。私は変種と風味を構築すると私にこれを与えるだろうと思ったが、私が見ているのは、ある変種を選択すると、もう一方のapkファイルが置き換えられるということだ。これをappのbuild.gradleファイルに追加し、ビルドバリアントのウィンドウでphoneDebugまたはtabletDebugを選択することができます。androidstudio2 variant apk

productFlavors { 
    phone { 
     applicationId "com.ebookfrenzy.builddemo.app.phone" 
     versionName "1.0-phone" 
    } 
    tablet { 
     applicationId "com.ebookfrenzy.builddemo.app.tablet" 
     versionName "1.0-tablet" 
    } 
} 

私はタブレット/ RES /値と呼ばれるアプリ/ srcの下にディレクトリを作成し、携帯電話/ resを/値と、それぞれに異なるのstrings.xmlファイルを持っていると私のレイアウトxmlファイルごとに異なる文字列hello_worldを参照文字列ファイル。これはすべて動作しています。phoneDebugまたはtabletDebugのバリアントを選択すると、適切なハロー文字列が取得されます。
私が選択した変種に応じて、ビルドディレクトリにapp-tablet-debug-unaligned.apkまたはapp-phone-debug-unaligned.apkが表示されます。しかし、1つのバリアントを選択すると、もう一方のバリアントは消滅します。
apkが見た目にはっきりとインストールされている亜種を実行すると、少なくとも私のデバイスのアプリケーションにはBuildDemoが1つしかインストールされていません。
デバイスに別のphoneDebugとtabletDebugのAPMをインストールするにはどうすればよいですか?
ありがとうございます。
Steve S.

答えて

0

私は自分の質問に答えて、これが誰か他の人を助けることを望んでもう少し目立つようにします。

2つのアプリは、既に、productFlavorsのエントリとは異なるapplicationIdを持っています。そしてgradleを使って - マニフェストファイルを変更して出力を変更することには懐疑的です。それはうまくいくかもしれませんが、EclipseからAndroidStudioに移行している間に、何度かそれに噛まれました。

apkが上書きされているという私の前提が間違っていることが判明しました。 Settings-> Device-> Appsを使ってアプリを見ると、BuildDemoの2つのインスタンスがありました。ランチャーは1つのインスタンスしか表示していませんでした。また、「ADBの午後リストパッケージ-f builddemo '」を使用しています:

package:/data/app/com.ebookfrenzy.builddemo.app.phone-1.apk=com.ebookfrenzy.builddemo.app.phone 
package:/data/app/com.ebookfrenzy.builddemo.app.tablet-1.apk=com.ebookfrenzy.builddemo.app.tablet 

私の修正がためのstrings.xmlファイルに(アプリケーションのラベルを設定するために、マニフェストファイルで参照される)APP_NAMEを上書きすることでした各変種。 phone/res/values/strings.xmlの下にあるものがBuildDemo.phoneで、タブレットの下にあるものがBuildDemo.tabletです。ランチャーを開くと、BuildDemo.phoneとBuildDemo.tabletが表示されます。
いつものように、提案に感謝します。彼らは答えに向かって私を指摘した。
スティーブS.

0

Androidは、AndroidManifest.xmlの定義済みパッケージ名とAndroidStudioの場合は、同じアプリケーションかどうかを識別するbuild.prop(Moduleアプリケーション)を使用します。 「同じ」アプリを2回インストールする場合は、パッケージ名を変更するしかありません。それでは、Androidは、別のアプリを考えます。それ以外の場合は、Androidは常にあなたが説明したように上書きします。

1

Android OSのように別々のアプリを制作するには、さまざまなバリエーションやフレーバーを取得する必要があります。電話とタブレット用に異なるアイデアがあります。ステップは、さらにこれは、その後、「com.ebookfrenzy.builddemo.app.phone」と「com.ebookfrenzy.builddemo.app.phoneを生成し、ビルドバリアントごとに異なるサフィックス(例えばデバッグ)

buildTypes { 
    release { 
    } 
    debug { 
     applicationIdSuffix ".debug" 
    } 
} 

を追加することです。あなたの "電話"味のためのそれぞれのリリースビルドとデバッグビルドのデバッグ

0

私はあなたが必要と思うものは、別のapplicationIdをgraleビルドの味で定義することです。 Hereは、これを行う方法です。

私の意見では、同じapplicationIdをgradle変数にして、それをapplicationIdサフィックスと連結する方が良いでしょう。そうすれば、IDは接尾辞によってのみ異なることになります。