147 lines
4.0 KiB
Markdown
147 lines
4.0 KiB
Markdown
# Gradle Setup for Asleep SDK
|
|
|
|
## Project-level build.gradle
|
|
|
|
```gradle
|
|
buildscript {
|
|
dependencies {
|
|
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.48'
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
id 'com.android.application' version '8.2.2' apply false
|
|
id 'com.android.library' version '8.2.2' apply false
|
|
id 'org.jetbrains.kotlin.android' version '1.9.24' apply false
|
|
id 'com.google.dagger.hilt.android' version '2.48' apply false
|
|
}
|
|
```
|
|
|
|
## App-level build.gradle
|
|
|
|
```gradle
|
|
plugins {
|
|
id 'com.android.application'
|
|
id 'org.jetbrains.kotlin.android'
|
|
id 'kotlin-kapt'
|
|
id 'dagger.hilt.android.plugin'
|
|
}
|
|
|
|
android {
|
|
namespace 'com.example.yourapp'
|
|
compileSdk 34
|
|
|
|
defaultConfig {
|
|
applicationId "com.example.yourapp"
|
|
minSdk 24 // Minimum SDK 24 required for Asleep SDK
|
|
targetSdk 34
|
|
versionCode 1
|
|
versionName "1.0"
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
|
|
// Store API key securely in local.properties
|
|
Properties properties = new Properties()
|
|
properties.load(project.rootProject.file('local.properties').newDataInputStream())
|
|
buildConfigField "String", "ASLEEP_API_KEY", properties['asleep_api_key']
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled true
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_17
|
|
targetCompatibility JavaVersion.VERSION_17
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = '17'
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding true
|
|
buildConfig = true
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
// Core Android dependencies
|
|
implementation 'androidx.core:core-ktx:1.12.0'
|
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
|
implementation 'com.google.android.material:material:1.11.0'
|
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
|
|
|
// Hilt for dependency injection
|
|
implementation "com.google.dagger:hilt-android:2.48"
|
|
kapt "com.google.dagger:hilt-compiler:2.48"
|
|
|
|
// Activity and Fragment KTX
|
|
implementation 'androidx.activity:activity-ktx:1.8.2'
|
|
implementation 'androidx.fragment:fragment-ktx:1.6.2'
|
|
implementation 'androidx.lifecycle:lifecycle-service:2.7.0'
|
|
|
|
// Required for Asleep SDK
|
|
implementation 'com.squareup.okhttp3:okhttp:4.11.0'
|
|
debugImplementation 'com.squareup.okhttp3:logging-interceptor:4.10.0'
|
|
implementation 'com.google.code.gson:gson:2.10'
|
|
|
|
// Asleep SDK (check for latest version)
|
|
implementation 'ai.asleep:asleepsdk:3.1.4'
|
|
|
|
// Testing
|
|
testImplementation 'junit:junit:4.13.2'
|
|
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
|
|
}
|
|
```
|
|
|
|
## local.properties
|
|
|
|
```properties
|
|
# Store your Asleep API key securely (never commit this file to version control)
|
|
asleep_api_key="your_api_key_here"
|
|
```
|
|
|
|
## Key Requirements
|
|
|
|
1. **Minimum SDK**: 24 (Android 7.0)
|
|
2. **Target SDK**: 34 recommended
|
|
3. **Java Version**: 17
|
|
4. **Kotlin Version**: 1.9.24 or higher
|
|
5. **Gradle Plugin**: 8.2.2 or higher
|
|
|
|
## Dependency Notes
|
|
|
|
- **OkHttp**: Required for network operations
|
|
- **Gson**: Required for JSON parsing
|
|
- **Hilt**: Recommended for dependency injection (not strictly required)
|
|
- **ViewBinding**: Recommended for type-safe view access
|
|
|
|
## ProGuard Rules
|
|
|
|
If using ProGuard/R8, add these rules to `proguard-rules.pro`:
|
|
|
|
```proguard
|
|
# Asleep SDK
|
|
-keep class ai.asleep.asleepsdk.** { *; }
|
|
-dontwarn ai.asleep.asleepsdk.**
|
|
|
|
# Gson
|
|
-keepattributes Signature
|
|
-keepattributes *Annotation*
|
|
-dontwarn sun.misc.**
|
|
-keep class * implements com.google.gson.TypeAdapter
|
|
-keep class * implements com.google.gson.TypeAdapterFactory
|
|
-keep class * implements com.google.gson.JsonSerializer
|
|
-keep class * implements com.google.gson.JsonDeserializer
|
|
|
|
# OkHttp
|
|
-dontwarn okhttp3.**
|
|
-dontwarn okio.**
|
|
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
|
|
```
|