2014-03-13 2 views
2

Я создаю очень простое приложение со свободной и платной версией, для этого я использую отличную функцию productFlavors в плагине Android Gradle. Я понимаю, как файл build.gradle должен быть настроен и написал его так, чтобы мои параметры сборки были;Как изменить код между продуктами Flavors

  • freeRelease
  • freeDebug
  • paidRelease
  • PaidDebug

, который выглядит следующим образом

buildTypes { 
    release { 
     runProguard false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     signingConfig signingConfigs.someconfig 
    } 
} 
productFlavors { 
    free { 
     packageName "com.somepackagename.appfree" 
    } 
    paid { 
     packageName "com.somepackagename.appPaid" 
    } 
} 

В принципе, все, что я пытаюсь сделать, это ограничить несколько функций и добавьте AdMod в бесплатную версию, как бы я сделал что? Я добавляю инструкции if-else в своих основных классах Java, которые проверяют, бесплатно ли они или оплачиваются? или я могу перезаписать классы Java в бесплатной директории? Как мне это сделать?

ответ

2

Вы можете кодировать вещи в структуре каталогов, например .:

src/ 
    main/     # Common source and assets 
    java/ 
    res/ 
    AndroidManifest.xml 
    free/     # Source and assets for the free flavour 
    java/ 
    res/ 
    AndroidManifest.xml 
    paid/     # Source and assets for the paid flavour 
    java/ 
    res/ 
    AndroidManifest.xml 

Код и активы, которые являются специфическими для одной версии или другой вдаваться в конкретные каталоги. Проявления слиты. Вы можете использовать поле FLAVOR, сгенерированное в BuildConfig.java, на базовые инструкции if-else.

Раздел руководства пользователя Android-Gradle-Plugin SourceSets and Dependencies объясняет это более подробно.

0

Я могу добавить инструкции if-else в мои основные классы Java, которые проверяют, чтобы увидеть , если это бесплатно или заплачено?

Да, вы должны добавить if-else в вашем activities/fragments, чтобы проверить вкус:

private void javaCode() { 
    if (BuildConfig.FLAVOR.equals("paid")) { 
     doIt(); 
    else { 
     showOnlyInPaidAppDialog(); 
    } 
} 

Источник: BuildConfig

Смежные вопросы