3

Dire que j'ai le build.gradle suivantComment utiliser finale résolu applicationId dans build.gradle

android{ 
    defaultConfig{ 
     applicationId "com.example.base" 
    } 
    buildTypes{ 
     release{ 
      minifyEnabled true 
     } 
     debug{ 
      applicationIdSuffix ".dev" 
      minifyEnabled false 
     } 
    } 
    productFlavors{ 
     free{ 
      applicationId "com.example.free" 
     } 
     paid{ 
      applicationId "com.example.paid" 
     } 
    } 
} 

Je veux ajouter l'identifiant d'application résultant de strings.xml, comme ceci:

resValue "string", "app_package", applicationId 

je peux alors utiliser cette valeur dans les intentions targetPackage défini dans les préférences xml

Mais la valeur change en fonction de ce bloc, je mis cette ligne:

  • DefaultConfig -> "com.example.base" (toujours le Id de base, inutile)
  • productFlavours.free -> "com.example.free" (problème est ne change pas à « com .example.free.dev » pour debug)
  • productFlavours -> erreur, ne construit pas
  • buildTypes.debug -> erreur, ne construit pas

En utilisant le applicationIdSuffix, je dois gradle à résoudre l'identifiant final avant de pouvoir l'utiliser. Comment je fais ça?

+0

https: // développeur .android.com/studio/build/applicatio n-id.html –

Répondre

2

Ajouter cette après productFlavors au sein android DSL:

applicationVariants.all { variant -> 
    variant.resValue "string", "app_package", variant.applicationId 
} 

Dans freeDebug construire ce sera ajouté dans app/intermediates/res/merged/free/debug/values/values.xml:

<string name="app_package" translatable="false">com.example.free.dev</string> 

En paidDebug:

<string name="app_package" translatable="false">com.example.paid.dev</string>