You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.3 KiB
Groovy
141 lines
4.3 KiB
Groovy
buildscript {
|
|
ext.kotlin_version = "1.9.22"
|
|
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath "com.android.tools.build:gradle:8.1.0"
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
flatDir {
|
|
dirs 'libs'
|
|
}
|
|
}
|
|
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'com.android.application'
|
|
apply plugin: 'org.jetbrains.kotlin.plugin.serialization'
|
|
|
|
android {
|
|
ndkVersion "23.1.7779620"
|
|
compileSdkVersion 33
|
|
defaultConfig {
|
|
applicationId "com.tailscale.ipn"
|
|
minSdkVersion 22
|
|
targetSdkVersion 33
|
|
versionCode 198
|
|
versionName "1.59.53-t0f042b981-g1017015de26"
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_17
|
|
targetCompatibility JavaVersion.VERSION_17
|
|
}
|
|
flavorDimensions "version"
|
|
productFlavors {
|
|
fdroid {
|
|
// The fdroid flavor contains only free dependencies and is suitable
|
|
// for the F-Droid app store.
|
|
}
|
|
play {
|
|
// The play flavor contains all features and is for the Play Store.
|
|
}
|
|
newapp {
|
|
// In progress!
|
|
}
|
|
}
|
|
|
|
// This attaches the custom task to the preBuild task of newapp
|
|
applicationVariants.all { variant ->
|
|
if (variant.flavorName == 'newapp') {
|
|
variant.preBuild.dependsOn buildAllGoLibs
|
|
}
|
|
}
|
|
|
|
namespace 'com.tailscale.ipn'
|
|
sourceSets {
|
|
main {
|
|
res.srcDirs = ['src/main/res']
|
|
java.srcDirs = ['src/main/java']
|
|
manifest.srcFile 'src/main/AndroidManifest.xml'
|
|
}
|
|
fdroid {
|
|
manifest.srcFile 'src/app/AndroidManifest.xml'
|
|
java{
|
|
srcDir 'src/app'
|
|
}
|
|
}
|
|
play {
|
|
manifest.srcFile 'src/app/AndroidManifest.xml'
|
|
java{
|
|
srcDir 'src/app'
|
|
}
|
|
}
|
|
newapp{
|
|
java{
|
|
srcDir 'src/newapp/java'
|
|
}
|
|
jniLibs.srcDirs = ['src/main/jniLibs']
|
|
manifest.srcFile 'src/newapp/AndroidManifest.xml'
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation "androidx.core:core:1.9.0"
|
|
implementation 'androidx.core:core-ktx:1.9.0'
|
|
implementation "androidx.browser:browser:1.5.0"
|
|
implementation "androidx.security:security-crypto:1.1.0-alpha06"
|
|
implementation "androidx.work:work-runtime:2.8.1"
|
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
|
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0"
|
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
implementation ':ipn@aar'
|
|
testImplementation "junit:junit:4.12"
|
|
|
|
// Non-free dependencies.
|
|
playImplementation 'com.google.android.gms:play-services-auth:20.7.0'
|
|
}
|
|
|
|
def ndkPath = project.hasProperty('ndkPath') ? project.property('ndkPath') : System.getenv('ANDROID_SDK_ROOT')
|
|
|
|
task checkNDK {
|
|
doFirst {
|
|
if (ndkPath == null) {
|
|
throw new GradleException('NDK path not found. Please define ndkPath in local.properties or ANDROID_SDK_HOME environment variable.')
|
|
}
|
|
}
|
|
}
|
|
|
|
task buildGoLibArm64(type: Exec) {
|
|
environment "CC", "$ndkPath/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android30-clang"
|
|
commandLine 'sh', '-c', "GOOS=android GOARCH=arm64 CGO_ENABLED=1 go build -buildmode=c-shared -ldflags=-w -o src/main/jniLibs/arm64-v8a/repository.so ../cmd/tailscale"
|
|
}
|
|
|
|
task buildGoLibArmeabi(type: Exec) {
|
|
environment "CC", "$ndkPath/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi30-clang"
|
|
commandLine 'sh', '-c', "GOOS=android GOARCH=arm CGO_ENABLED=1 go build -buildmode=c-shared -ldflags=-w -o src/main/jniLibs/armeabi-v7a/repository.so ../cmd/tailscale"
|
|
}
|
|
|
|
task buildGoLibX86(type: Exec) {
|
|
environment "CC", "$ndkPath/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android30-clang"
|
|
commandLine 'sh', '-c', "GOOS=android GOARCH=386 CGO_ENABLED=1 go build -buildmode=c-shared -ldflags=-w -o src/main/jniLibs/x86/repository.so ../cmd/tailscale"
|
|
}
|
|
|
|
task buildGoLibX86_64(type: Exec) {
|
|
environment "CC", "$ndkPath/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/x86_64-linux-android30-clang"
|
|
commandLine 'sh', '-c', "GOOS=android GOARCH=amd64 CGO_ENABLED=1 go build -buildmode=c-shared -ldflags=-w -o src/main/jniLibs/x86_64/repository.so ../cmd/tailscale"
|
|
}
|
|
|
|
task buildAllGoLibs {
|
|
dependsOn checkNDK, buildGoLibArm64, buildGoLibArmeabi, buildGoLibX86, buildGoLibX86_64
|
|
}
|
|
|