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

时间:2015-08-20 11:46:44

标签: java android properties

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

debug.username = test123
debug.password = ABCD1234

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

String st =
"<http://dbpedia.org/resource/53debf646ad3465872522651> <http://dbpedia.org/resource/end> <http://dbpedia.org/resource/1407106906391> .
<http://dbpedia.org/resource/53debf676ad3465872522655> <http://dbpedia.org/resource/foi> <http://dbpedia.org/resource/SpatialThing> ."

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

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

2 个答案:

答案 0 :(得分:7)

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

  1. local.properties 文件中设置值。
  2. 阅读Gradle构建脚本中的值并将其设置为BuildConfig常量。
  3. 访问Java代码中的BuildConfig常量。
  4. <强> 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()+"\""
        }
    }
    

    示例Java类:

    package your.package.name;
    
    class MyClass {
        String getUsername() {
            return BuildConfig.USERNAME; // Will return "myUsername"
        }
    }
    

答案 1 :(得分:2)

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

更详细的答案在这里 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);
        }