plugins {
	id 'com.android.application'
}

def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
if (keystorePropertiesFile.exists()) {
	keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
	namespace 'com.libremobileos.faceunlock'
	compileSdk 33

	defaultConfig {
		applicationId "com.libremobileos.faceunlock"
		minSdk 31
		targetSdk 33
		versionCode 1
		versionName "1.0"
		missingDimensionStrategy 'gpu', 'withGpu'
	}

	buildTypes {
		release {
			minifyEnabled false
			proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
		}
	}
	compileOptions {
		sourceCompatibility JavaVersion.VERSION_11
		targetCompatibility JavaVersion.VERSION_11
	}
	signingConfigs {
		debug {
			if (keystorePropertiesFile.exists()) {
				keyAlias keystoreProperties['keyAlias']
				keyPassword keystoreProperties['keyPassword']
				storeFile file("../" + keystoreProperties['storeFile'])
				storePassword keystoreProperties['storePassword']
			}
		}
	}
	sourceSets {
		main {
			aidl.srcDirs = ['src/main/java']
		}
	}
}

dependencies {
	implementation files('system_libs/android.hardware.biometrics.face-V1.0-java.jar')
	compileOnly files('system_libs/framework.jar')

	implementation(project(':FaceShared'))

	implementation "androidx.annotation:annotation:1.6.0"
	implementation "androidx.cardview:cardview:1.0.0"
	implementation "androidx.constraintlayout:constraintlayout:2.1.4"
}
