Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reference different assets based on build flavor

I am able to get the correct api_key.txt on debug builds because that is a buildType. However I am unable to get this working with the productFlavor amazon.

I’ve tried doing this in my build.gradle file which compiles but it will not actually reference the correct file at run time:

sourceSets {
amazon {
  assets.srcDirs = ['app/src/amazon/assets']
}

Here is my folder structure:

folder structure

How can I reference api_key.txt in the amazon/assets folder when my product flavor is amazon?

All help is greatly appreciated, thank you.

like image 627
Dick Lucas Avatar asked May 17 '18 01:05

Dick Lucas


People also ask

What is build flavor?

Android Product Flavors are also known as Android build types or Android build variants are the native Android app development way to implement different versions of the same application with minor changes.

What are buildTypes and product Flavours in Gradle?

Once the new project is created, by default it consists of two build types/variants - debug, release. Debug is the build type that is used when we run the application from the IDE directly onto a device. A release is the build type that requires you to sign the APK.

What does build type user mean?

Build Type refers to build and packaging settings like signing configuration for a project. For example, debug and release build types. The debug will use android debug certificate for packaging the APK file. While, release build type will use user-defined release certificate for signing and packaging the APK.


2 Answers

Based on this https://developer.android.com/studio/build/build-variants document you want this type of hierarchy structure of your application. Remove assets.srcDirs from all build flavours and you can try with this kind of structure.

buildTypes {
  release {
    // ... the usual stuff here
  }
  releaseAlt {
    // .. the usual stuff here too like signing config etc...
  }
}

file hierarchy You should have like :

project/
- app/
 - src/
  - main/
   - assets/
    - logo.png // Generic assets go here
   - java/
   - res/
   - ...

  - flavor1/
   - assets/
    - logo.png // Specific assets for all the flavor1 Variants

  - release/
   - assets/
    - logo.png // Specific assets for all the releaseAlt Variants.

  - flavor1Release/
   - assets/
    - logo.png // very specific assets for the flavor1ReleaseAlt Variant
- SDK/
like image 121
Mayur Patel Avatar answered Oct 18 '22 20:10

Mayur Patel


I think you should write "src/amazon/assets" instead of "app/src/amazon/assets".

sourceSets {
amazon {
  assets.srcDirs = ['/src/amazon/assets']
}
like image 33
Ravindra-Ravi Verma Avatar answered Oct 18 '22 21:10

Ravindra-Ravi Verma