2015-09-01 11 views
6

To moja sprawaAndroid Gradle dwa różne działania wyrzutni dla dwóch różnych smakach produktów

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

aw paid smaku muszę inną aktywność wyrzutni w porównaniu do main lub free jak zrobić poniżej

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> 

I kiedy zaczynam instalować aplikację w wariantach kompilacji paid, zawsze instaluje dwie aplikacje, tj. Bezpłatną i płatną, ale z taką samą nazwą aplikacji. A gdy odinstaluję którąkolwiek z nich, zarówno aplikacja zostanie odinstalowana. Czy powinien nie tylko wariant paid zbudować płatną aplikację i wariant free zbudować darmową aplikację? Oto moje środowisko pracy:

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

Odpowiedz

6

Nie instalujesz 2 aplikacji.

Korzystanie z płatnego smaku w swoim Manifeście spowoduje połączenie 2 działań z kategorią LAUNCHER.

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

W ten sposób będziesz mieć 2 ikony do uruchomienia aplikacji. Jeden dla MainActivity, jeden dla SecondActivity.

Jeśli chcesz mieć inną aktywność dla każdego smaku, musisz użyć tej samej aktywności w każdym smaku.

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

Dzięki za informacje. Wiem o zrobieniu tego samego "działania" w różnych smakach, aby stworzyć dwie różne aplikacje. Byłem ciekawy, czy to samo można zrobić z dwoma różnymi domyślnymi działaniami lub programami uruchamiającymi. – laaptu

+0

@laaptu, jeśli chciałbyś mieć inną aktywność domyślną lub uruchamiającą, sposób jest taki sam. Zdefiniuj tę samą klasę w folderze smaku (nie w głównym). –

+0

Dzięki za informację. Więc wydaje się, że nie ma obejścia dla różnych działań. Jedyną opcją jest zdefiniowanie tej samej czynności w folderze z produktami smakowymi i modyfikacja zgodnie z potrzebą. – laaptu

9

Właściwie można to zrobić, mając 2 z oczywistych plików i bez powielania czynności:

głównej/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> 

zapłaconą/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> 

co oznacza, że ​​podczas manifestu scalania dla płatnego smaku usuwany jest filtr zamiany, który definiuje program uruchamiający aktywność od głównej i dodaj ją do SecondMainActivity.

+0

Zapisane ma dzień dzięki kumplowi –

Powiązane problemy