web-dev-qa-db-fra.com

Comment utiliser différents noms de packages entre les saveurs?

J'essaie de créer un seul projet avec 2 saveurs: gratuit et pro (versions).

Mon application est déjà dans PlayStore avec différents packages (par exemple: com.example.appfree et com.example.app)

Voici mon build.gradle:

defaultConfig {
   applicationId "com.example.appfree"
}
productFlavors{
   lite {
       applicationIdSuffix 'lite'
   }

   pro {

   }
}

Et voici mon fichier manifeste:

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.app">

    <application
        Android:allowBackup="true"
        Android:icon="@mipmap/ic_launcher"
        Android:label="@string/app_name"
        Android:supportsRtl="true"
        Android:theme="@style/AppTheme">

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

        <activity Android:name=".MainActivity"/>

    </application>

</manifest>

J'ai essayé de télécharger une apk de construction pour les versions gratuites et professionnelles. La saveur Pro est correcte, mais la saveur gratuite n'est pas acceptée par Google, car le package est incorrect. Comment puis-je resoudre ceci?

====== Résolu: ====== applicationIdSuffix ne fonctionne qu'avec les buildTypes.

20
Felipe Porge Xavier

Avec le nouveau Android Gradle build system, vous pouvez facilement créer plusieurs versions différentes de votre application; par exemple, vous pouvez créer à la fois une version "gratuite" et une version "pro" de votre application ( en utilisant des saveurs), et ceux-ci doivent avoir des packages différents dans le Google Play Store de sorte qu'ils peuvent être installés et achetés séparément, tous deux installés en même temps, etc. et les versions "bêta" de votre application (en utilisant des types de build) et celles-ci peuvent également contribuer de manière similaire à des noms de packages uniques.

app/build.gradle:

apply plugin: 'com.Android.application'
Android {
    compileSdkVersion 19
    buildToolsVersion "19.1"
    defaultConfig {
        applicationId "com.example.my.app"
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
...

app/build.gradle:

productFlavors {
    pro {
        applicationId = "com.example.my.pkg.pro"
    }
    free {
        applicationId = "com.example.my.pkg.free"
    }
}

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

de Site de projet Android Studio - ApplicationId contre PackageName

20
Veener
flavorDimensions "version"
productFlavors {
    demo {
        // Assigns this product flavor to the "version" flavor dimension.
        // This property is optional if you are using only one dimension.
        dimension "version"
        applicationIdSuffix ".demo"
        versionNameSuffix "-demo"
    }
    full {
        dimension "version"
        applicationIdSuffix ".full"
        versionNameSuffix "-full"
    }
}
0
fMadTech