管理存储库中的Android共享资源

时间:2016-10-17 21:14:08

标签: android

我需要在各种Git存储库中管理多个Android项目,所有这些都由repo管理。我找到了一个由Git管理的Android #version 430 in layout(location = 0) vec2 position; in layout(location = 1) vec2 texCoord; out vec2 vertex_texCoord; void main() { gl_Position = vec4(position, 0.0, 1.0); vertex_texCoord = texCoord; } #version 430 out vec4 fragmentColor; in vec2 vertex_texCoord; uniform sampler2d textureSampler; void main() { fragmentColor = texture(textureSampler, vertex_texCoord); } 文件,但我没有看到像图像文件被忽略的内容:    https://github.com/github/gitignore/blob/master/Android.gitignore

我还读到,创建一个包含我的资源的Android库将允许一个不是.gitignore的模块,而是一个供应用程序使用的资源。    https://developer.android.com/studio/projects/android-library.html

存储共享资源是否有最佳做法?

1 个答案:

答案 0 :(得分:0)

创建一个Android库项目是微不足道的;将它分发给您的其他下游应用程序真的很有趣。

理想情况下,以模仿您在Android上使用其他依赖项的方式执行此操作会很好,即将工件添加到dependencies文件中的build.gradle块并让Gradle自动获取它。麻烦的是它是一个私有库,你不想在JCenter,Maven Central或其他公共工件托管上托管。一些公司有自己的内部工件托管服务器实例。

幸运的是,您可以使用maven-publish Gradle plugin在本地(在您的计算机上)使用Maven并获得相同的效果。首先,在库项目的build.gradle文件中,您需要

apply plugin: 'maven-publish'

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId 'your.package.namespace'
            artifactId 'library.name'
            version '0.1' // for example
            artifacts = configurations.archives.artifacts
            artifact sourceJar
        }
    }
}

接下来,您需要通过运行

将此库发布到本地Maven缓存
./gradlew publishToMavenLocal

接下来在您的下游项目中,添加mavenLocal作为存储库,并使用您之前使用的组ID,工件ID和版本添加您的依赖项:

repositories {
    mavenLocal()
    /* more repositories here */
}

dependencies {
    compile 'your.package.namespace:library.name:version'
    /* more dependencies here */
}

这应该达到你想要的效果。

缺点是每个开发人员必须至少下拉一次库项目并运行命令发布到他们的Maven本地,如果库项目发生变化,则必须更新版本,并且所有开发人员都需要下拉更改并在本地再次发布。这可能有点笨拙。

许多公司在内部运行自己的工件托管服务器实例以避免这种情况,因此您只需向内部托管和下游项目发布一次,只需更新其build.gradle中的版本并让其自动同步。这需要对({1}}块(库)和publishing块(下游项目)进行一些额外配置;如果您打算朝那个方向前进,我会留给您研究。