在没有互联网连接的情况下构建项目

时间:2018-06-28 07:03:27

标签: android gradle

由于安全原因,我有一个项目需要在脱机模式下进行而没有任何互联网连接。我的androidStudio定义为离线模式。当我通过Task / build / assembleRelease运行汇编发布时,一切正常,我构建了apk。但是当通过命令行命令运行时:

gradlew --offline assembleRelease

我得到了很多错误,而没有这个和那个的兑现版本。当我修复一个错误并将某些文件复制到缓存中时,我得到了新的错误,提示缺少其他内容。

那么,通过androidStudio的assembleRelease如何工作?我如何通过cmd或远程运行同一命令,因为它似乎具有所需的所有缓存。从Studio和从cmd运行assembleRelease有什么区别?

我也知道简单的解决方案,可以在线运行一次,然后就可以了。无法这样做...

由于我的PC能够整体构建APK,如果没有androidStudio,如何通过cmd或远程进行构建?

1 个答案:

答案 0 :(得分:5)

首先,您可以使用Android Studio来构建项目,而不能直接调用Gradle,这确实让我感到惊讶。不同的Gradle版本可能是原因之一,但是由于您已经使用了Gradle包装器,因此不太可能。也许未将Android Studio配置为使用包装器。


但是,我绝对建议不要在不同系统的Gradle缓存之间复制依赖项。相反,我鼓励您在离线存储库中收集所需的依赖项,例如flatDir repository

repositories {
    flatDir name: 'offlineRepository', dirs: "C:/path/to/repository"
}

遗憾的是,flatDir存储库不支持来自描述符文件(例如Maven .pom文件)的传递依赖关系,但是您也可以为本地文件系统位置定义mavenivy存储库:

repositories {
    maven {
        name = 'offlineRepository'
        url = uri('file:///c:/path/to/repository')
    }
}

如果应该既可以从在线环境也可以从特定的离线环境构建项目,则可以考虑在本地计算机上定义一个初始化脚本,该脚本可以将任何已定义的存储库替换为您的离线环境存储库。