Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read local.properties android in java files

I want to add custom fields in local.properties like

debug.username=test123
debug.password=abcd1234

can add .properties files in assets folder and read that easily.

Resources resources = context.getResources();
AssetManager assetManager = resources.getAssets();
Properties properties = null;        
InputStream inputStream = assetManager.open(fileName);
properties = new Properties();
properties.load(inputStream);

But don't want to do this. As i want every team member of our to use local.properties to specify there custom attribute. which is not the part of version control system.

So how to read local.properties placed in the root folder of gradle based android project in java files at runtime?

like image 661
Rohit Sharma Avatar asked Aug 20 '15 11:08

Rohit Sharma


People also ask

Where is Android local properties?

The local. properties file goes in the project's root level, in the same folder as the gradlew , gradlew. bat , settings. gradle and other files.

What is Gradle_user_home?

GRADLE_USER_HOME. Specifies the Gradle user home directory (which defaults to $USER_HOME/. gradle if not set). JAVA_HOME. Specifies the JDK installation directory to use for the client VM.


1 Answers

I know that this is an old question but I recently encountered the same thing and I thought I'd share my solution:

  1. Set the value in your local.properties file.
  2. Read the value in your Gradle build script and set it to a BuildConfig constant.
  3. Access the BuildConfig constant in your Java code.

local.properties

username=myUsername

build.gradle:

def getUsername() {
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
    return properties.getProperty("username");
}

android {
    defaultConfig {
        buildConfigField "String", "USERNAME", "\""+getUsername()+"\""
    }
}

Example Java class:

package your.package.name;

class MyClass {
    String getUsername() {
        return BuildConfig.USERNAME; // Will return "myUsername"
    }
}
like image 114
Jakub Avatar answered Sep 27 '22 17:09

Jakub