Reputation: 13815
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?
Upvotes: 10
Views: 9743
Reputation: 1582
Here's a variant of the other solutions, stripped down to the essentials:
local.properties:
username=test123
password=abcd1234
build.gradle
android {
...
defaultConfig {
...
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
buildConfigField "String", "USERNAME", "\"" + properties.getProperty('username') + "\""
buildConfigField "String", "PASSWORD", "\"" + properties.getProperty('password') + "\""
}
}
Java:
String userName = BuildConfig.USERNAME;
Upvotes: 1
Reputation: 613
I know that this is an old question but I recently encountered the same thing and I thought I'd share my solution:
BuildConfig
constant.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"
}
}
Upvotes: 17
Reputation:
Properties properties = new Properties();
InputStream inputStream =
this.getClass().getClassLoader().getResourceAsStream("fileName.properties");
properties.load(inputStream);
Username=properties.getProperty("username");
password=properties.getProperty("password");
More detailed answer is here http://pillsfromtheweb.blogspot.in/2014/09/properties-file-in-android.html
and for asset use this code
AssetManager assetManager = getAssets();
InputStream inputStream = null;
try {
inputStream = assetManager.open("fileName.properties");
properties.load(inputStream);
String Username = properties.getProperty("username");
String password = properties.getProperty("password");
}
catch (IOException e){
Log.e("message: ",e.toString);
}
Upvotes: 2