When working with an Android library, it’s common to make changes and quickly test them in your app. Constantly switching between using your local library and an artifactory version can be tedious, especially if it involves commenting and uncommenting lines in your build.gradle
file.
Here's a more efficient way to toggle between the two using a simple boolean flag.
Note: This post uses some of tips from my previous post .
Step 1: Create a Configuration File
First, create a config.properties
file to manage the switch between your Artifactory and local project. The file should contain a boolean flag like this:
# Set to false to use local library project
useArtifactory=true
Step 2: Set Up a Gradle Settings File
Next, create a settings_library.gradle
file that loads the properties from the configuration file and determines which library to use.
def properties = new Properties()
file("config.properties").withInputStream { properties.load(it) }
def useArtifactory = properties.getProperty("useArtifactory").toBoolean()
def osName = System.getProperty("os.name").toLowerCase()
if (!useArtifactory) {
include ':moduleName'
if (osName.contains("win")) {
project(':moduleName').projectDir = new File('C:\\Users\\sj\\AndroidStudioProjects\\TestLibrary', 'app')
}
else {
project(':moduleName').projectDir = new File('/Users/sj/AndroidStudioProjects/TestLibrary', 'app')
}
}
Step 3: Reference the Settings File
In your main settings.gradle
file, reference the settings_library.gradle
file to apply the configuration:
apply from:'settings_library.gradle'
Step 4: Load Properties in the Root build.gradle
To make the useArtifactory
variable accessible across all your build.gradle
files, load the properties again in your root build.gradle
:
def properties = new Properties()
file("config.properties").withInputStream { properties.load(it) }
ext.useArtifactory = properties.getProperty("useArtifactory").toBoolean()
Step 5: Adjust Your Module’s build.gradle
Finally, in your module’s build.gradle
, use the useArtifactory
flag to toggle between the artifactory and local versions of your library:
dependencies {
if (useArtifactory) {
implementation "com.test.library:1.0.0" //Fetching the library from artifactory
}
else {
implementation project(':moduleName')
}
}
Note: You might need to rebuilt gradle tasks after switching back and forth between artifactory and local project.
And that’s it! By simply changing a flag in your config.properties
file, you can quickly switch between using your local library and the version stored in artifactory.