我需要在各种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
存储共享资源是否有最佳做法?
答案 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
块(下游项目)进行一些额外配置;如果您打算朝那个方向前进,我会留给您研究。