比如说我的机器上有一个文件夹,它位于D:\ AndroidLibraries,同事有相同的文件夹,但是在C:\ Users \ Jim \ AndroidLibraires。
我们都在android studio中使用android项目,我们都想使用该库中的库(jar和aar)。
在这些问题中,我们看到我们可以将项目依赖项定义为对其在硬盘上的位置的引用(除非我们理解错误):
Is it possible to declare git repository as dependency in android gradle?
Reuse modules in Android Studio
现在的问题是,我们如何使用环境变量抽象文件系统路径?例如:
project( ':security' ).projectDir =
new File(settingsDir, '%android_libraries_root%\security' )
答案 0 :(得分:2)
System,getenv(“变量名称”)在gradle中工作以获取路径。我从this获得了参考 所以这应该得到包含jar和aar文件的文件夹的实际路径
答案 1 :(得分:0)
对于更便携/长期的解决方案,您可以使用本地' flatdir'存储库,如讨论https://docs.gradle.org/current/userguide/dependency_management.html#sec:flat_dir_resolver和How to add local .jar file dependency to build.gradle file?
例如:
final String androidLibs = System.getenv('android_libraries_root') ?: "${System.getProperty('user.home')}/AndroidLibraries"
// TODO: Might want to warn/error out if the folder is not present
repositories {
flatDir {
dirs "${androidLibs}/security"
}
}
基本上,在这个例子中,它假定默认值将在用户主目录下,当没有定义ENV变量时,这可能适用于你,也可能不适合你。
然后你可以声明实际的依赖关系,例如
compile 'com.android.support:multidex:1.0.1'
flatDir存储库只需要在其下直接安装版本化文件,即%android_libraries_root%\ security \ multidex-1.0.1.jar。换句话说,它忽略了“组织”。段。
当然,如果你的env变量没有定义和/或默认不起作用,它将无法解决依赖关系,所以你可能想要添加一些代码来至少警告用户flatDir repo无法找到安全库。
好的,所以这比直接引用文件要多一些工作,但是这样开始的一个好处是,您可以稍后切换到共享或公共repo而不更改您的依赖声明(您只需要添加(或替换flatDir repo)可以从中检索android库的repo声明。