【问题标题】:How to compile backend without android app in Android Studio如何在 Android Studio 中编译没有 android 应用程序的后端
【发布时间】:2015-04-20 02:06:07
【问题描述】:
所以我有一个带有应用引擎后端(App-Engine Connected Android Project)的安卓应用。回到我以前在 Eclipse 中工作的时候,我可以编译后端,然后为 android 生成端点,然后在 android 上工作。但现在在 Android Studio 上,如果不构建 android 应用程序,我似乎无法构建服务器。问题是我的 android 应用程序还没有准备好编译。那么我如何在服务器上工作并在 android 应用程序之外进行编译和部署呢?不用说我对 Android Studio 非常陌生。但我知道 eclipse 工作流程,即
- 处理服务器代码(开发、编译、测试)
- 为 android 生成客户端端点
【问题讨论】:
标签:
android
google-app-engine
android-studio
【解决方案1】:
您的 Android Studio 项目很可能是一个多模块项目,即它将有一个服务器端应用程序和一个 Android 应用程序。
Android Studio 使用 Gradle 作为其构建工具,因此您可以选择在每个项目上分别处理特定的 Gradle 任务(清理、编译、构建等)。您不必总是启动或运行将尝试查看依赖关系然后构建所有内容的整体构建过程。
由于您想单独处理服务器应用程序并做好准备,我建议您可以运行特定于该项目的构建任务。在指挥官视图中,您将分别看到每个项目的 Gradle 任务,您可以运行它。或者,您也可以前往终端查看任务和/或单独运行这些任务。
例如假设您有一个名为MyApp 的Android Studio 项目,其中有两个模块,分别称为app 和api。 app 是 Android 模块,api 是带有云端点的服务器端模块。如果您访问终端或命令行并转到根文件夹,您可以通过gradle <modulename>:<taskname> 为每个模块运行 Gradle 特定任务。
希望这会有所帮助。
【解决方案2】:
假设项目结构为 MyApplication (root),带有 app (android) 和 backend (appengine)
如果您只想构建后端。您应该在该 gradle 模块上运行 assemble 任务。不幸的是,直接从“Gradle”选项卡运行任务似乎并没有单独针对模块运行任务,而是在所有内容上运行它。所以你有两个选择。
- 从命令行运行构建:
./gradlew :backend:assemble
- 在 IDE 中为您的 gradle 构建创建运行配置,其值
姓名:Backend Build(或其他),
Gradle 项目:MyApplication:backend(从下拉列表中选择),
任务:backend:assemble
并使用它来自行构建您的后端。
两者看起来都有些烦人。您也可以尝试在运行时直接启动单个模块的重建。
如果您查看您的 backend 运行配置(运行 -> 编辑配置),在部分 Before launch: 中,您会看到一个用于重建项目的 Make。您可能需要从运行配置中删除它,这样它就不会在部署之前尝试重建整个项目。要将其替换为您的模块的 gradle 组合,请单击 +,然后添加一个新的 Run Gradle task 并在“2”中按上述方式进行配置。
我对此提出了一个错误:https://code.google.com/p/android/issues/detail?id=168875&thanks=168875&ts=1429554595 我认为应该切换默认行为(使用 gradle assemble 而不是 make)。
在 Gradle 中使用一些魔法来生成客户端库。如果您查看您的 Android 应用程序的构建文件,它应该在您的 backend 上引用一个名为 android-endpoints 的配置,以便生成端点作为您的 app 的编译依赖项模块