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

标签 android gradle

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

gradlew --offline assembleRelease

我得到了一堆错误,而不是这个那个的没有兑现版本。当我修复一个错误并将一些文件复制到缓存时,我会收到新的错误,表示缺少其他内容。

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

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

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

最佳答案

首先,令我惊讶的是,您可以使用 Android Studio 构建项目,但不能直接调用 Gradle。不同的 Gradle 版本可能是一个原因,但由于您已经使用了 Gradle 包装器,所以这种情况不太可能发生。可能 Android Studio 未配置为使用包装器。


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

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

可悲的是,flatDir存储库不支持来自 Maven 等描述 rune 件的传递依赖项 .pom文件,但您也可以定义 mavenivy本地文件系统位置的存储库:

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

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

关于android - 在没有互联网连接的情况下构建项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51076611/

相关文章:

java - 如何在 Java 类上的 Kotlin 中声明扩展静态函数?

android - 如何创建将充当链接的 TextView

macos - Libgdx Intellij Gradle解决错误

java - 什么是最大线程 sleep 时间?

android - 错误日志文件?

android - MediaCodec 缓冲区下溢异常

android - 为 gradle 生成的 AndroidManifest 指定额外的 XML

android - Android Docx4J Gradle:尽管排除了类org.slf4j

java - 从gradle多项目中的父项目读取文件

android - 将应用程序转换为库以供另一个应用程序使用时,如何配置Gradle依赖项