由于安全原因,我有一个项目需要在脱机模式下进行而没有任何互联网连接。我的androidStudio定义为离线模式。当我通过Task / build / assembleRelease运行汇编发布时,一切正常,我构建了apk。但是当通过命令行命令运行时:
gradlew --offline assembleRelease
我得到了很多错误,而没有这个和那个的兑现版本。当我修复一个错误并将某些文件复制到缓存中时,我得到了新的错误,提示缺少其他内容。
那么,通过androidStudio的assembleRelease如何工作?我如何通过cmd或远程运行同一命令,因为它似乎具有所需的所有缓存。从Studio和从cmd运行assembleRelease有什么区别?
我也知道简单的解决方案,可以在线运行一次,然后就可以了。无法这样做...
由于我的PC能够整体构建APK,如果没有androidStudio,如何通过cmd或远程进行构建?
答案 0 :(得分:5)
首先,您可以使用Android Studio来构建项目,而不能直接调用Gradle,这确实让我感到惊讶。不同的Gradle版本可能是原因之一,但是由于您已经使用了Gradle包装器,因此不太可能。也许未将Android Studio配置为使用包装器。
但是,我绝对建议不要在不同系统的Gradle缓存之间复制依赖项。相反,我鼓励您在离线存储库中收集所需的依赖项,例如flatDir
repository:
repositories {
flatDir name: 'offlineRepository', dirs: "C:/path/to/repository"
}
遗憾的是,flatDir
存储库不支持来自描述符文件(例如Maven .pom
文件)的传递依赖关系,但是您也可以为本地文件系统位置定义maven
或ivy
存储库:
repositories {
maven {
name = 'offlineRepository'
url = uri('file:///c:/path/to/repository')
}
}
如果应该既可以从在线环境也可以从特定的离线环境构建项目,则可以考虑在本地计算机上定义一个初始化脚本,该脚本可以将任何已定义的存储库替换为您的离线环境存储库。