我在Bitbucket repo中有一些.txt文件(只有.txt文件不是android lib),我想通过Android studio(Gradle)在项目构建时添加到我的android项目中。
目标:随时修改远程文件内容,并在构建项目时添加更新的文件。
我经常研究但找不到任何解决方案。请帮忙。
答案 0 :(得分:1)
您可以使用preBuild
任务在构建之前下载文件,并使用this method执行下载。以下内容将文件下载到assets
模块
app
目录中
android {
preBuild << {
def url = "https://bitbucket.org/HellGate/jquery-slider/raw/5ab0c31aaa57fb7d321076194f462b472f5f031e/index.html"
def file = new File('app/src/main/assets/index.html')
new URL(url).withInputStream{ i -> file.withOutputStream{ it << i }}
}
}
如果使用私有存储库,请使用基本身份验证方案username:password
:
android {
preBuild << {
def url = "https://username:password@bitbucket.org/HellGate/jquery-slider/raw/5ab0c31aaa57fb7d321076194f462b472f5f031e/index.html"
def file = new File('app/src/main/assets/index.html')
new URL(url).withInputStream{ i -> file.withOutputStream{ it << i }}
}
}
在这种情况下,您可以将它们放在local.properties
文件中(不提交凭据):
file_path=app/src/main/assets/index.html
ext_url=https://username:password@bitbucket.org/bertrandmartel/test/raw/c489ae46c3de9ad7089f53660a8de616af08265d/youtube.html
阅读preBuild
任务中的属性:
preBuild << {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
if (properties.containsKey("file_path") && properties.containsKey("ext_url")) {
def file = new File(properties.getProperty("file_path"))
def url = properties.getProperty("ext_url")
new URL(url).withInputStream{ i -> file.withOutputStream{ it << i }}
}
else{
println("no properties found")
}
}