最后我决定创建一个静态助手:
public class PropertyUtils {
public static Properties getProperties(Context context) {
AssetManager assetManager = context.getResources().getAssets();
Properties properties = new Properties();
try {
loadProperties(assetManager, "project.properties", properties);
if (Arrays.asList(assetManager.list("")).contains("local.properties")){
loadProperties(assetManager, "local.properties", properties);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
return properties;
}
private static void loadProperties(AssetManager assetManager, String fileName, Properties properties) throws IOException {
InputStream inputStream = assetManager.open(fileName);
properties.load(inputStream);
inputStream.close();
}
}
assets 目录中的 project.properties 具有以下属性:
baseUrl=${baseUrl}
和资产中的 local.properties:
baseUrl=http://192.168.0.1:8080/
local.properties 从版本控制中排除,并覆盖任何 project.properties。因此,在 CI 工具中构建时,baseUrl 会被相关值覆盖,并且当在本地(在 IntelliJ 中)运行时,将使用 local.properties 值。