我使用this文章中描述的过程为我的Android应用创建了Sample数据目录。我想在我的项目之间共享这组样本数据,所以我创建了一个只包含样本数据的库。但据我所知,sampledata
文件夹未被编译到库中。有没有办法在多个Android项目之间共享样本数据?
答案 0 :(得分:5)
正如已经说过的那样,你不能用图书馆这样做,因为sampledata
根本不能成为Android库的一部分。
您可以做一件事,在某个地方托管您的names
文件然后使用gradle任务获取它,您只需添加到应用的build.gradle
clean.doFirst {
println "cleanSamples"
def samplesDir = new File(projectDir.absolutePath, "sampledata")
if (samplesDir.exists()) {
samplesDir.deleteDir()
}
}
task fetchSamples {
println "fetchSamples"
def samplesDir = new File(projectDir.absolutePath, "sampledata")
if (samplesDir.exists()) {
println "samples dir already exists"
return
}
samplesDir.mkdir()
def names = new File(samplesDir, "names")
new URL('http://path/to/names').withInputStream { i ->
names.withOutputStream {
it << i
}
}
}
你可以在那里看到2个功能,第一个在clean
任务之前运行,它只会删除你的sampledata
文件夹。第二个是在每个构建上运行的任务,它不会每次都下载文件,但只有当目录不存在时才会下载。
我了解您也可以复制粘贴names
文件,但是,使用此方法您只需复制粘贴任务一次,您就可以通过上传更改任何项目中的names
一个新文件并进行干净的构建。
答案 1 :(得分:1)
简短的回答是否定的,你不能用sampledata
文件夹做到这一点。基本上,Android库的格式为AAR
。如果你reference官方文档,它说:
文件本身是一个包含以下必填项的zip文件:
/AndroidManifest.xml
/classes.jar
/ RES /
/R.txt
/public.txt
此外,AAR文件可能包含以下一个或多个可选条目:
/资产/
/libs/name.jar
/jni/abi_name/name.so(其中abi_name是Android支持的ABI之一)
/proguard.txt
/lint.jar
因此,sampledata
不能成为AAR
库的一部分。
<强>更新强>
您可以使用predefined示例资源,而不是自己的数据样本。
例如@tools:sample/first_names
将从一些常见的名字中随机选择,例如Sophia,Jacob,Ivan。
使用示例:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="@tools:sample/first_names" />