2015-09-01 10 views
6

Questo è il mio casoGradle due diverse attività di lancio Android per due gusti diversi prodotti

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

e in paid sapore ho bisogno di una diversa attività launcher in confronto a main o free come fatto seguito

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> 

E quando inizio ad installare l'app nelle varianti di costruzione paid, installa sempre due app, ovvero gratuite e a pagamento ma con lo stesso nome dell'app. E quando disinstallo qualcuno, l'app viene disinstallata. Non dovrebbe solo la variante paid creare un'app a pagamento e la variante free creare un'applicazione gratuita? Di seguito è riportato il mio ambiente di lavoro

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

risposta

6

Non si installano 2 app.

Usando l'aroma pagato nel Manifesto, unirai 2 Attività con la categoria LANCIO.

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

In questo modo avrete 2 icone per avviare la vostra app. Uno per lo MainActivity, uno per lo SecondActivity.

Se si desidera un'attività diversa per ciascun gusto, è necessario utilizzare la stessa attività per ciascun gusto.

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

Grazie per le informazioni. So di fare lo stesso 'Activity' su diversi gusti per creare due diverse app. Ero curioso di sapere se lo stesso può essere fatto con due diverse impostazioni predefinite o attività di avvio. – laaptu

+0

@laaptu se si desidera un'attività predefinita di default o di avvio, il modo è lo stesso. Definire la stessa classe nella cartella di sapore (non principale) –

+0

Grazie per le informazioni. Quindi non sembra esserci soluzione alternativa con attività diverse. L'unica opzione è la definizione della stessa attività nella cartella di sapore del prodotto e la modifica secondo necessità. – laaptu

9

In realtà si può fare, con avere 2 file manifesto e senza duplicare l'attività:

AndroidManifest.xml main /:

<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> 

pagato/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> 

significa che al manifest si fondono per il gusto pagato si rimuove il filtro intent che definisce il launcher attività da main e aggiungilo a SecondMainActivity.

+0

Salvato ma giorno grazie amico –

Problemi correlati