如何在java文件中读取local.properties android

Jav*_*tor 5 java android properties

我想在local.properties中添加自定义字段

debug.username = test123
debug.password = abcd1234

可以在assets文件夹中添加.properties文件并轻松读取.

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

但是不想这样做.因为我希望我们的每个团队成员都使用local.properties来指定自定义属性.这不是版本控制系统的一部分.

那么如何在运行时读取java文件中基于gradle的android项目的根文件夹中的local.properties

Jak*_*kub 9

我知道这是一个老问题,但我最近遇到了同样的事情,我想我会分享我的解决方案:

  1. local.properties文件中设置值.
  2. 读取Gradle构建脚本中的值并将其设置为BuildConfig常量.
  3. 访问BuildConfigJava代码中的常量.

local.properties

username=myUsername
Run Code Online (Sandbox Code Playgroud)

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()+"\""
    }
}
Run Code Online (Sandbox Code Playgroud)

示例Java类:

package your.package.name;

class MyClass {
    String getUsername() {
        return BuildConfig.USERNAME; // Will return "myUsername"
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 2

Properties properties = new Properties();
InputStream inputStream = 
this.getClass().getClassLoader().getResourceAsStream("fileName.properties");
properties.load(inputStream);
Username=properties.getProperty("username");      
password=properties.getProperty("password");
Run Code Online (Sandbox Code Playgroud)

更详细的答案在这里 http://pillsfromtheweb.blogspot.in/2014/09/properties-file-in-android.html

对于资产,请使用此代码

        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);
        }
Run Code Online (Sandbox Code Playgroud)

  • 不起作用输入流为空。你自己尝试过吗? (2认同)