Skip to content

Commit d7524c8

Browse files
Merge pull request #360 from ViliusSutkus89/conanInstallTask
Update conan install tasks in gradle (allows running ./gradlew clean without running conan install)
2 parents 5796674 + 5061083 commit d7524c8

File tree

3 files changed

+49
-28
lines changed

3 files changed

+49
-28
lines changed

.github/workflows/android_main.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,15 @@ jobs:
5050

5151
- name: conan remote
5252
run: conan remote add --index 0 odr https://artifactory.opendocument.app/artifactory/api/conan/conan
53-
- name: conan login
54-
run: conan remote login odr admin --password ${{ secrets.ARTIFACTORY }}
5553
- name: conan profile
5654
run: conan profile detect
5755

5856
- name: gradle
5957
run: ./gradlew assembleDebug lintProDebug lintLiteDebug --stacktrace
6058

59+
- name: conan login
60+
run: conan remote login odr admin --password ${{ secrets.ARTIFACTORY }}
61+
6162
- name: upload binaries to conan repo
6263
run: conan upload "*" --check --confirm --remote odr
6364

@@ -118,8 +119,6 @@ jobs:
118119

119120
- name: conan remote
120121
run: conan remote add --index 0 odr https://artifactory.opendocument.app/artifactory/api/conan/conan
121-
- name: conan login
122-
run: conan remote login odr admin --password ${{ secrets.ARTIFACTORY }}
123122
- name: conan profile
124123
run: conan profile detect
125124

@@ -173,6 +172,9 @@ jobs:
173172
174173
test ! -f sorry_but_tests_are_failing
175174
175+
- name: conan login
176+
run: conan remote login odr admin --password ${{ secrets.ARTIFACTORY }}
177+
176178
- name: upload binaries to conan repo
177179
run: conan upload "*" --check --confirm --remote odr
178180

app/build.gradle

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,40 @@ android {
88
ndkVersion "26.3.11579264"
99
}
1010

11-
task conanProfile {
12-
file("build").mkdirs()
13-
14-
copy {
15-
from "conanprofile.txt"
16-
into "build"
11+
tasks.register('conanProfile', Copy) {
12+
from "conanprofile.txt"
13+
into "build/"
14+
15+
doLast {
16+
def file = file("build/conanprofile.txt")
17+
def content = file.text
18+
content = content.replace("<NDK_PATH>", android.ndkDirectory.toString())
19+
file.write(content)
1720
}
18-
19-
def file = file("build/conanprofile.txt")
20-
def content = file.text
21-
content = content.replace("<NDK_PATH>", android.ndkDirectory.toString())
22-
file.write(content)
2321
}
2422

25-
task conanInstall {
26-
["armv7", "armv8", "x86", "x86_64"].each { String arch ->
27-
exec {
28-
commandLine(
29-
"conan", "install", ".",
30-
"--output-folder=build/conan/" + arch,
31-
"--build=missing",
32-
"--profile:host=build/conanprofile.txt",
33-
"-s", "arch=" + arch,
34-
"-s", "build_type=Release",
35-
"-s", "&:build_type=RelWithDebInfo",
36-
"-s", "odrcore/*:build_type=RelWithDebInfo",
37-
)
23+
tasks.register('conanInstall') {
24+
dependsOn(tasks.named("conanProfile"))
25+
doFirst {
26+
["armv7", "armv8", "x86", "x86_64"].each { String arch ->
27+
exec {
28+
commandLine(
29+
"conan", "install", ".",
30+
"--output-folder=build/conan/" + arch,
31+
"--build=missing",
32+
"--profile:host=build/conanprofile.txt",
33+
"-s", "arch=" + arch,
34+
"-s", "build_type=Release",
35+
"-s", "&:build_type=RelWithDebInfo",
36+
"-s", "odrcore/*:build_type=RelWithDebInfo",
37+
)
38+
}
3839
}
3940
}
4041
}
42+
tasks.named("preBuild").configure { preBuildTask ->
43+
preBuildTask.dependsOn(tasks.named("conanInstall"))
44+
}
4145

4246
android {
4347
defaultConfig {
@@ -168,3 +172,11 @@ dependencies {
168172
implementation 'androidx.test.espresso:espresso-idling-resource:3.5.1'
169173
implementation 'androidx.annotation:annotation:1.8.0'
170174
}
175+
176+
// Without removing .cxx dir on cleanup, double gradle clean is erroring out.
177+
// Before removing this workaround, check if "./gradlew assembleDebug; ./gradlew clean; ./gradlew clean" works
178+
tasks.named("clean") {
179+
doFirst {
180+
delete getLayout().getProjectDirectory().dir(".cxx")
181+
}
182+
}

build.gradle

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,10 @@ plugins {
33
id 'com.google.gms.google-services'version '4.4.1' apply false
44
id 'com.google.firebase.crashlytics' version '3.0.1' apply false
55
}
6+
7+
// Android Studio's sync task expects CMake to work properly
8+
// Proper CMake, due to our supplied conan_toolchain.cmake, requires conan to be
9+
// done as a dependency of Android Studio sync
10+
tasks.named('prepareKotlinBuildScriptModel').configure { prepareKotlinBuildScriptModelTask ->
11+
prepareKotlinBuildScriptModelTask.dependsOn(project("app").tasks.named("conanInstall"))
12+
}

0 commit comments

Comments
 (0)