2015-09-01 17 views
6

Das ist mein FallAndroid gradle zwei verschiedene Abschussaktivitäten für zwei verschiedene Produkte Aromen

productFlavors { 
    paid { 
     applicationId "com.paid.app" 
    } 
    free { 
     applicationId "com.free.app" 
    } 
} 

und in paid Geschmack muß ich eine andere Launcher Aktivität im Vergleich zu main oder free wie unten

getan
main/AndroidManifest.xml 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

paid/AndroidManifest.xml 

    <activity 
     android:name=".SecondMainActivity" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Und wenn ich beginne, App in paid Build-Varianten zu installieren, installiert es immer zwei Apps, dh kostenlos und bezahlt, aber mit dem gleichen App-Namen. Und wenn ich einen entferne, wird die App beide deinstalliert. Sollte nicht nur paid Variante bauen eine kostenpflichtige App und free Variante eine kostenlose App bauen? Im Anschluss ist mein Arbeitsumfeld

dependencies { 
    classpath 'com.android.tools.build:gradle:1.3.0' 
    } 
    Android Studio 1.4 beta 2 

Antwort

6

Sie sind zwei Anwendungen nicht installieren.

Mit dem bezahlten Geschmack in Ihrem Manifest werden Sie 2 Aktivitäten mit der LAUNCHER-Kategorie zusammenführen.

<intent-filter> 
      <action android:name="android.intent.action.MAIN" />  
      <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

Auf diese Weise werden Sie zwei Symbole haben die App zu starten. Eine für die MainActivity, eine für die SecondActivity.

Wenn Sie für jeden Geschmack eine andere Aktivität wünschen, müssen Sie in jedem Geschmack dieselbe Aktivität verwenden.

app/src/free/java/..../MainActivity 
app/src/paid/java/..../MainActivity 
+0

Danke für die Info. Ich weiß, dass ich die gleiche "Aktivität" für verschiedene Geschmacksrichtungen verwende, um zwei verschiedene Apps zu erstellen. Ich war neugierig, ob das gleiche mit zwei verschiedenen Standard-oder Launcher-Aktivität getan werden kann. – laaptu

+0

@laaptu Wenn Sie andere Standard oder Launcher-Aktivität möchten, ist der Weg der gleiche. Definieren Sie die gleiche Klasse im Flavor-Ordner (nicht im Hauptverzeichnis) –

+0

Danke für die Info. Es scheint also keine Problemumgehung mit verschiedenen Aktivitäten zu geben. Die einzige Option besteht darin, die gleiche Aktivität im Produktaroma-Ordner zu definieren und sie nach Bedarf zu ändern. – laaptu

9

Eigentlich können Sie das tun, mit mit 2 Manifest-Dateien und ohne die Aktivität zu duplizieren:

main/AndroidManifest.xml:

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

bezahlt/AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    package="com.yourpackage"> 
     <activity 
       android:name=".MainActivity" 
       android:label="@string/app_name"> 
        <intent-filter tools:node="remove"> 
         <action android:name="android.intent.action.MAIN" /> 
         <category android:name="android.intent.category.LAUNCHER"/> 
        </intent-filter> 
     </activity> 
     <activity 
       android:name=".SecondMainActivity" 
       android:label="@string/app_name"> 
        <intent-filter> 
         <action android:name="android.intent.action.MAIN" /> 
         <category android:name="android.intent.category.LAUNCHER" /> 
        </intent-filter> 
     </activity> 

</manifest> 

Dies bedeutet, dass Sie bei Manifest Merge für Paid Flavor den Intent-Filter entfernen, der den Launcher definiert Aktivität von Haupt und fügen Sie es zu SecondMainActivity hinzu.

+0

Gespeichert ma Tag danke Kumpel –

Verwandte Themen