【问题标题】:Build project without internet connection在没有互联网连接的情况下构建项目
【发布时间】:2023-03-09 15:18:01
【问题描述】:

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

gradlew --offline assembleRelease

我得到一堆错误,而不是没有兑现版本的这个和那个。当我修复一个错误并将一些文件复制到缓存时,我会得到一个新的错误,而其他东西丢失了。

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

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

由于我的 PC 能够构建 APK 整体,我如何在没有 androidStudio 的情况下仅通过 cmd 或远程构建?

【问题讨论】:

  • 第一次android需要下载一些代理设置,之后你也可以离线构建你的项目
  • 我第一次没有选项。我唯一的选择是从其他 PC 添加一些缓存,但我已经尝试过,但没有成功。

标签: android gradle


【解决方案1】:

首先,让我感到惊讶的是,您可以使用 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')
    }
}

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

【讨论】:

  • 看起来是完美的答案。
  • 救了我的命...谢谢!
  • 如何创建这个offlineRepository?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 2018-03-14
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多