我有一个使用aar文件的Android项目。它包含以前构建的flutter代码。在我的gradle文件中,有一个aar的相对路径:
...
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是这样的:
# 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
任务时,构建会失败,因为它无法定位项目。
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版本坚持不能找到它们。是否有其他配置或任务需要我执行?
我已经看过链接了:
发布于 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项目中。文件夹结构如下:
- s(Android project)
- flutter_aar
如果flutter_aar工程和Android工程在您的本地机器上处于同一级别,如下所示:
- Mainfolder
- flutter_aar
- Android project
那么gradle任务将不能在azure代理机器中定位项目。
如果这个问题是这样的话。您可以尝试使用以下解决方法:
1 .将Bash任务的工作目录改为s
文件夹的上层,即Agent.BuildDirectory
ie。c:\agent_work\1
。如下所示:
- bash: |
cd "$(Agent.BuildDirectory)"
set -e
set -x
...
2,或者您可以尝试将gradle文件中的相对路径更改为maven { url '\''../flutter_aar/build/host/outputs/repo'\''}
https://stackoverflow.com/questions/65332493
复制相似问题