mirror of
https://github.com/syncthing/syncthing-android.git
synced 2024-11-22 04:11:14 +00:00
Refactor groovy gradle files to kotlin dsl (#2022)
## Description: Refactor gradle build files to use Kotlin DSL instead of Groovy. There were also a bash script and a python script that needed to be updated because they relied on parsing the `build.gradle` files written in Groovy. This PR completes the work started in: https://github.com/syncthing/syncthing-android/pull/2000
This commit is contained in:
parent
73bc845f98
commit
9ed273a32e
6 changed files with 140 additions and 128 deletions
101
app/build.gradle
101
app/build.gradle
|
@ -1,101 +0,0 @@
|
||||||
plugins {
|
|
||||||
id 'com.android.application'
|
|
||||||
id 'com.github.ben-manes.versions'
|
|
||||||
id 'com.github.triplet.play' version '3.7.0'
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation 'eu.chainfire:libsuperuser:1.1.1'
|
|
||||||
implementation 'com.google.android.material:material:1.8.0'
|
|
||||||
implementation 'com.google.code.gson:gson:2.10.1'
|
|
||||||
implementation 'org.mindrot:jbcrypt:0.4'
|
|
||||||
implementation 'com.google.guava:guava:32.1.3-android'
|
|
||||||
implementation 'com.annimon:stream:1.2.2'
|
|
||||||
implementation 'com.android.volley:volley:1.2.1'
|
|
||||||
implementation 'commons-io:commons-io:2.11.0'
|
|
||||||
|
|
||||||
implementation ('com.journeyapps:zxing-android-embedded:4.3.0') { transitive = false }
|
|
||||||
implementation 'com.google.zxing:core:3.4.1'
|
|
||||||
|
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
|
||||||
implementation 'com.google.dagger:dagger:2.49'
|
|
||||||
annotationProcessor 'com.google.dagger:dagger-compiler:2.49'
|
|
||||||
androidTestImplementation 'androidx.test:rules:1.4.0'
|
|
||||||
androidTestImplementation 'androidx.annotation:annotation:1.2.0'
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
// Changes to these values need to be reflected in `../docker/Dockerfile`
|
|
||||||
compileSdkVersion 33
|
|
||||||
buildToolsVersion '33.0.2'
|
|
||||||
ndkVersion = "${ndkVersionShared}"
|
|
||||||
|
|
||||||
buildTypes.debug.applicationIdSuffix ".debug"
|
|
||||||
buildFeatures.dataBinding = true
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
applicationId "com.nutomic.syncthingandroid"
|
|
||||||
minSdkVersion 21
|
|
||||||
targetSdkVersion 33
|
|
||||||
versionCode 4379
|
|
||||||
versionName "1.27.2-rc.2"
|
|
||||||
testApplicationId 'com.nutomic.syncthingandroid.test'
|
|
||||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
|
||||||
}
|
|
||||||
|
|
||||||
signingConfigs {
|
|
||||||
release {
|
|
||||||
storeFile = {
|
|
||||||
def path = System.getenv("SYNCTHING_RELEASE_STORE_FILE")
|
|
||||||
return (path) ? file(path) : null
|
|
||||||
}()
|
|
||||||
storePassword System.getenv("SIGNING_PASSWORD") ?: ""
|
|
||||||
keyAlias System.getenv("SYNCTHING_RELEASE_KEY_ALIAS") ?: ""
|
|
||||||
keyPassword System.getenv("SIGNING_PASSWORD") ?: ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
signingConfig = signingConfigs.release.storeFile ? signingConfigs.release : null
|
|
||||||
}
|
|
||||||
debug {
|
|
||||||
debuggable true
|
|
||||||
jniDebuggable true
|
|
||||||
renderscriptDebuggable true
|
|
||||||
minifyEnabled false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_11
|
|
||||||
targetCompatibility JavaVersion.VERSION_11
|
|
||||||
}
|
|
||||||
|
|
||||||
// Otherwise libsyncthing.so doesn't appear where it should in installs
|
|
||||||
// based on app bundles, and thus nothing works.
|
|
||||||
packagingOptions {
|
|
||||||
jniLibs {
|
|
||||||
useLegacyPackaging = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
play {
|
|
||||||
serviceAccountCredentials = file(System.getenv("SYNCTHING_RELEASE_PLAY_ACCOUNT_CONFIG_FILE") ?: 'keys.json')
|
|
||||||
track = 'beta'
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Some languages are not supported by Google Play, so we ignore them.
|
|
||||||
*/
|
|
||||||
task deleteUnsupportedPlayTranslations(type: Delete) {
|
|
||||||
delete 'src/main/play/listings/de_DE/'
|
|
||||||
delete 'src/main/play/listings/el-EL/'
|
|
||||||
delete 'src/main/play/listings/en/'
|
|
||||||
delete 'src/main/play/listings/eo/'
|
|
||||||
delete 'src/main/play/listings/eu/'
|
|
||||||
delete 'src/main/play/listings/nb/'
|
|
||||||
delete 'src/main/play/listings/nl_BE/'
|
|
||||||
delete 'src/main/play/listings/nn/'
|
|
||||||
delete 'src/main/play/listings/ta/'
|
|
||||||
}
|
|
110
app/build.gradle.kts
Normal file
110
app/build.gradle.kts
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
plugins {
|
||||||
|
id("com.android.application")
|
||||||
|
id("com.github.ben-manes.versions")
|
||||||
|
id("com.github.triplet.play") version "3.7.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation("eu.chainfire:libsuperuser:1.1.1")
|
||||||
|
implementation("com.google.android.material:material:1.8.0")
|
||||||
|
implementation("com.google.code.gson:gson:2.10.1")
|
||||||
|
implementation("org.mindrot:jbcrypt:0.4")
|
||||||
|
implementation("com.google.guava:guava:32.1.3-android")
|
||||||
|
implementation("com.annimon:stream:1.2.2")
|
||||||
|
implementation("com.android.volley:volley:1.2.1")
|
||||||
|
implementation("commons-io:commons-io:2.11.0")
|
||||||
|
|
||||||
|
implementation("com.journeyapps:zxing-android-embedded:4.3.0") {
|
||||||
|
isTransitive = false
|
||||||
|
}
|
||||||
|
implementation("com.google.zxing:core:3.4.1")
|
||||||
|
|
||||||
|
implementation("androidx.constraintlayout:constraintlayout:2.0.4")
|
||||||
|
implementation("com.google.dagger:dagger:2.49")
|
||||||
|
annotationProcessor("com.google.dagger:dagger-compiler:2.49")
|
||||||
|
androidTestImplementation("androidx.test:rules:1.4.0")
|
||||||
|
androidTestImplementation("androidx.annotation:annotation:1.2.0")
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
val ndkVersionShared = rootProject.extra.get("ndkVersionShared")
|
||||||
|
// Changes to these values need to be reflected in `../docker/Dockerfile`
|
||||||
|
compileSdk = 33
|
||||||
|
buildToolsVersion = "33.0.2"
|
||||||
|
ndkVersion = "${ndkVersionShared}"
|
||||||
|
|
||||||
|
buildFeatures {
|
||||||
|
dataBinding = true
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
applicationId = "com.nutomic.syncthingandroid"
|
||||||
|
minSdk = 21
|
||||||
|
targetSdk = 33
|
||||||
|
versionCode = 4372
|
||||||
|
versionName = "1.27.2-rc.2"
|
||||||
|
testApplicationId = "com.nutomic.syncthingandroid.test"
|
||||||
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
}
|
||||||
|
|
||||||
|
signingConfigs {
|
||||||
|
create("release") {
|
||||||
|
storeFile = System.getenv("SYNCTHING_RELEASE_STORE_FILE")?.let(::file)
|
||||||
|
storePassword = System.getenv("SIGNING_PASSWORD")
|
||||||
|
keyAlias = System.getenv("SYNCTHING_RELEASE_KEY_ALIAS")
|
||||||
|
keyPassword = System.getenv("SIGNING_PASSWORD")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
getByName("debug") {
|
||||||
|
applicationIdSuffix = ".debug"
|
||||||
|
isDebuggable = true
|
||||||
|
isJniDebuggable = true
|
||||||
|
isRenderscriptDebuggable = true
|
||||||
|
isMinifyEnabled = false
|
||||||
|
}
|
||||||
|
getByName("release") {
|
||||||
|
signingConfig = signingConfigs.runCatching { getByName("release") }
|
||||||
|
.getOrNull()
|
||||||
|
.takeIf { it?.storeFile != null }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_11
|
||||||
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise libsyncthing.so doesn't appear where it should in installs
|
||||||
|
// based on app bundles, and thus nothing works.
|
||||||
|
packagingOptions {
|
||||||
|
jniLibs {
|
||||||
|
useLegacyPackaging = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
play {
|
||||||
|
serviceAccountCredentials.set(
|
||||||
|
file(System.getenv("SYNCTHING_RELEASE_PLAY_ACCOUNT_CONFIG_FILE") ?: "keys.json")
|
||||||
|
)
|
||||||
|
track.set("beta")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Some languages are not supported by Google Play, so we ignore them.
|
||||||
|
*/
|
||||||
|
tasks.register<Delete>("deleteUnsupportedPlayTranslations") {
|
||||||
|
delete(
|
||||||
|
"src/main/play/listings/de_DE/",
|
||||||
|
"src/main/play/listings/el-EL/",
|
||||||
|
"src/main/play/listings/en/",
|
||||||
|
"src/main/play/listings/eo/",
|
||||||
|
"src/main/play/listings/eu/",
|
||||||
|
"src/main/play/listings/nb/",
|
||||||
|
"src/main/play/listings/nl_BE/",
|
||||||
|
"src/main/play/listings/nn/",
|
||||||
|
"src/main/play/listings/ta/",
|
||||||
|
)
|
||||||
|
}
|
|
@ -8,7 +8,7 @@ if ! git diff-index --exit-code --quiet HEAD; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NEW_VERSION_NAME=$1
|
NEW_VERSION_NAME=$1
|
||||||
OLD_VERSION_NAME=$(grep "versionName" "app/build.gradle" | awk '{print $2}')
|
OLD_VERSION_NAME=$(grep "versionName" "app/build.gradle.kts" | awk '{print $3}')
|
||||||
if [[ -z ${NEW_VERSION_NAME} ]]
|
if [[ -z ${NEW_VERSION_NAME} ]]
|
||||||
then
|
then
|
||||||
echo "New version name is empty. Please set a new version. Current version: $OLD_VERSION_NAME"
|
echo "New version name is empty. Please set a new version. Current version: $OLD_VERSION_NAME"
|
||||||
|
@ -45,13 +45,13 @@ echo "
|
||||||
Updating Version
|
Updating Version
|
||||||
-----------------------------
|
-----------------------------
|
||||||
"
|
"
|
||||||
OLD_VERSION_CODE=$(grep "versionCode" "app/build.gradle" -m 1 | awk '{print $2}')
|
OLD_VERSION_CODE=$(grep "versionCode" "app/build.gradle.kts" -m 1 | awk '{print $3}')
|
||||||
NEW_VERSION_CODE=$(($OLD_VERSION_CODE + 1))
|
NEW_VERSION_CODE=$(($OLD_VERSION_CODE + 1))
|
||||||
sed -i -e "s/versionCode $OLD_VERSION_CODE/versionCode $NEW_VERSION_CODE/" "app/build.gradle"
|
sed -i -e "s/versionCode = $OLD_VERSION_CODE/versionCode = $NEW_VERSION_CODE/" "app/build.gradle.kts"
|
||||||
|
|
||||||
OLD_VERSION_NAME=$(grep "versionName" "app/build.gradle" | awk '{print $2}')
|
OLD_VERSION_NAME=$(grep "versionName" "app/build.gradle.kts" | awk '{print $3}')
|
||||||
sed -i -e "s/$OLD_VERSION_NAME/\"$1\"/" "app/build.gradle"
|
sed -i -e "s/$OLD_VERSION_NAME/\"$1\"/" "app/build.gradle.kts"
|
||||||
git add "app/build.gradle" $CHANGELOG
|
git add "app/build.gradle.kts" $CHANGELOG
|
||||||
git commit -m "Bumped version to $NEW_VERSION_NAME"
|
git commit -m "Bumped version to $NEW_VERSION_NAME"
|
||||||
git tag -a ${NEW_VERSION_NAME} -m "
|
git tag -a ${NEW_VERSION_NAME} -m "
|
||||||
$NEW_VERSION_NAME
|
$NEW_VERSION_NAME
|
||||||
|
|
|
@ -47,11 +47,11 @@ def fail(message, *args, **kwargs):
|
||||||
|
|
||||||
|
|
||||||
def get_min_sdk(project_dir):
|
def get_min_sdk(project_dir):
|
||||||
with open(os.path.join(project_dir, 'app', 'build.gradle')) as file_handle:
|
with open(os.path.join(project_dir, 'app', 'build.gradle.kts')) as file_handle:
|
||||||
for line in file_handle:
|
for line in file_handle:
|
||||||
tokens = list(filter(None, line.split()))
|
tokens = list(filter(None, line.split()))
|
||||||
if len(tokens) == 2 and tokens[0] == 'minSdkVersion':
|
if len(tokens) == 3 and tokens[0] == 'minSdk':
|
||||||
return int(tokens[1])
|
return int(tokens[2])
|
||||||
|
|
||||||
fail('Failed to find minSdkVersion')
|
fail('Failed to find minSdkVersion')
|
||||||
|
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
plugins {
|
|
||||||
id 'ru.vyarus.use-python' version '3.0.0'
|
|
||||||
}
|
|
||||||
|
|
||||||
task buildNative(type: PythonTask) {
|
|
||||||
environment "NDK_VERSION", "$ndkVersionShared"
|
|
||||||
inputs.dir("$projectDir/src/")
|
|
||||||
outputs.dir("$projectDir/../app/src/main/jniLibs/")
|
|
||||||
command = "-u ./build-syncthing.py"
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Use separate task instead of standard clean(), so these folders aren't deleted by `gradle clean`.
|
|
||||||
*/
|
|
||||||
task cleanNative(type: Delete) {
|
|
||||||
delete "$projectDir/../app/src/main/jniLibs/"
|
|
||||||
delete "gobuild"
|
|
||||||
}
|
|
21
syncthing/build.gradle.kts
Normal file
21
syncthing/build.gradle.kts
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
import ru.vyarus.gradle.plugin.python.task.PythonTask
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id("ru.vyarus.use-python") version "3.0.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<PythonTask>("buildNative") {
|
||||||
|
val ndkVersionShared = rootProject.extra.get("ndkVersionShared")
|
||||||
|
environment("NDK_VERSION", "$ndkVersionShared")
|
||||||
|
inputs.dir("$projectDir/src/")
|
||||||
|
outputs.dir("$projectDir/../app/src/main/jniLibs/")
|
||||||
|
command = "-u ./build-syncthing.py"
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use separate task instead of standard clean(), so these folders aren't deleted by `gradle clean`.
|
||||||
|
*/
|
||||||
|
tasks.register<Delete>("cleanNative") {
|
||||||
|
delete("$projectDir/../app/src/main/jniLibs/")
|
||||||
|
delete("gobuild")
|
||||||
|
}
|
Loading…
Reference in a new issue