首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在azure管道上构建时找不到aar

在azure管道上构建时找不到aar
EN

Stack Overflow用户
提问于 2020-12-17 07:14:16
回答 1查看 321关注 0票数 0

我有一个使用aar文件的Android项目。它包含以前构建的flutter代码。在我的gradle文件中,有一个aar的相对路径:

代码语言:javascript
运行
复制
...
repositories {
    maven { url '\''https://maven.fabric.io/public'\'' }
    maven { url '\''https://jitpack.io'\'' }
    maven { url '\''../../flutter_aar/build/host/outputs/repo'\''}
    maven { url '\''https://storage.googleapis.com/download.flutter.io'\''}
    flatDir(dirs: '\''libs'\'')
}
...

在本地构建项目一切正常。现在我使用azure管道来构建这两个项目。我在azure上的yaml是这样的:

代码语言:javascript
运行
复制
# Android
# Build your Android project with Gradle.
# Add steps that test, sign, and distribute the APK, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/android
trigger:
  batch: true
  branches:
    include:
      - release-version-3.0
    exclude:
      - bug-*
      - master
      - develop

pool:
  vmImage: 'macos-latest'

variables: 
- group: TestApp.Mobile
- name: PAT
- name: FLUTTER_VERSION

steps:
- task: JavaToolInstaller@0
  displayName: Install JDK
  inputs:
    versionSpec: '8'
    jdkArchitectureOption: 'x64'
    jdkSourceOption: 'PreInstalled'

- checkout: self
  submodules: true
  
- bash: |
   set -e
   set -x

   git clone -b 1.22.2 --single-branch https://github.com/flutter/flutter.git
   export PATH=`pwd`/flutter/bin:$PATH

   B64_PAT=$(printf ":generated_pat" | base64)

   git config --global credential.helper store
   git config --global user.name "test_user"
   git config --global http.extraheader "Authorization: Basic ${B64_PAT}"
   git clone -b development https://my_organization@dev.azure.com/base_arch/_git/flutter_aar
   cd flutter_aar
   
   flutter pub upgrade
   flutter build aar

   pwd
   ls -la

   cd ..
   pwd
   ls -la
   echo "$(cat app/build.gradle)"
  displayName: Build AAR

- task: Gradle@2
  displayName: Build Android App
  inputs:
    workingDirectory: '$(Build.SourcesDirectory)'
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    publishJUnitResults: false
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'assembleHomoProfile'

执行Gradle@2任务时,构建会失败,因为它无法定位项目。

代码语言:javascript
运行
复制
FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:compileHomoProfileJavaWithJavac'.
> Could not resolve all task dependencies for configuration ':app:homoProfileCompileClasspath'.
   > Could not find com.project.flutter_aar:flutter_profile:1.0.
     Required by:
         project :app

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

我检查了项目是否在那里,以及它是否是通过执行单个ls -la生成的。文件没问题,但是gradle版本坚持不能找到它们。是否有其他配置或任务需要我执行?

我已经看过链接了:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files?view=azure-devops&tabs=yaml

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-build-artifacts?view=azure-devops

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-17 17:07:01

azure代理中的文件夹结构可能与本地计算机不同。这将导致您在gradle文件中定义的相对路径在azure代理中不起作用。

您可能已经知道默认的当前工作目录(即System.DefaultWorkingDirectory)是s文件夹(即c:\agent_work\1\s)用于所有流水线任务。您的Android项目源代码将在此s文件夹中下载。

在上面的管道中。bash任务还将克隆并构建s文件夹中的flutter_aar项目,这意味着flutter_aar项目将作为子目录克隆到您的Android项目中。文件夹结构如下:

代码语言:javascript
运行
复制
- s(Android project)
  - flutter_aar

如果flutter_aar工程和Android工程在您的本地机器上处于同一级别,如下所示:

代码语言:javascript
运行
复制
- Mainfolder
  - flutter_aar
  - Android project

那么gradle任务将不能在azure代理机器中定位项目。

如果这个问题是这样的话。您可以尝试使用以下解决方法:

1 .将Bash任务的工作目录改为s文件夹的上层,即Agent.BuildDirectory ie。c:\agent_work\1。如下所示:

代码语言:javascript
运行
复制
- bash: |
   cd "$(Agent.BuildDirectory)"
   set -e
   set -x
   ...

2,或者您可以尝试将gradle文件中的相对路径更改为maven { url '\''../flutter_aar/build/host/outputs/repo'\''}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65332493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档