使用库中的Sample data目录

时间:2018-02-19 21:27:37

标签: android android-layout android-studio sample-data

我使用this文章中描述的过程为我的Android应用创建了Sample数据目录。我想在我的项目之间共享这组样本数据,所以我创建了一个只包含样本数据的库。但据我所知,sampledata文件夹未被编译到库中。有没有办法在多个Android项目之间共享样本数据?

2 个答案:

答案 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" />