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')
	implementation files('system_libs/LMOFaceClient.jar')
	compileOnly files('system_libs/framework.jar')

	implementation(project(':FaceShared'))

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