diff --git a/.DS_Store b/.DS_Store index fb3da172..dc95bcbe 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.github/workflows/android_cd.yml b/.github/workflows/android_cd.yml index 1b7f231d..f8313800 100644 --- a/.github/workflows/android_cd.yml +++ b/.github/workflows/android_cd.yml @@ -30,6 +30,10 @@ jobs: restore-keys: | ${{ runner.os }}-gradle- + - name: Set up local.properties + run: | + echo "KAKAO_APP_KEY=${{ secrets.KAKAO_APP_KEY }}" >> local.properties + - name: Build with Gradle run: ./gradlew assembleDebug --build-cache --stacktrace diff --git a/.github/workflows/android_ci.yml b/.github/workflows/android_ci.yml index 81bf9f67..7b85cad0 100644 --- a/.github/workflows/android_ci.yml +++ b/.github/workflows/android_ci.yml @@ -33,6 +33,10 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew + - name: Set up local.properties + run: | + echo "KAKAO_APP_KEY=${{ secrets.KAKAO_APP_KEY }}" >> local.properties + - name: Build with Gradle run: ./gradlew assembleDebug --build-cache --stacktrace diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1c52d386..e78c245d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,5 @@ +import java.util.Properties + plugins { id("piece.android.application") id("piece.android.compose") @@ -12,6 +14,11 @@ android { targetSdk = 34 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + + val localProperties = Properties() + localProperties.load(project.rootProject.file("local.properties").bufferedReader()) + manifestPlaceholders["KAKAO_APP_KEY"] = localProperties["KAKAO_APP_KEY"] as String + buildConfigField("String", "KAKAO_APP_KEY", "\"${localProperties["KAKAO_APP_KEY"]}\"") } packaging { resources { excludes += "/META-INF/*" } } @@ -36,6 +43,8 @@ dependencies { implementation(libs.mavericks) implementation(libs.mavericks.hilt) + implementation(libs.kakao.user) + implementation(projects.feature.auth) implementation(projects.feature.etc) implementation(projects.feature.matching) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d8830359..db25a1a2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + - + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/puzzle/piece/PieceApplication.kt b/app/src/main/java/com/puzzle/piece/PieceApplication.kt index c51e162a..974bd3d5 100644 --- a/app/src/main/java/com/puzzle/piece/PieceApplication.kt +++ b/app/src/main/java/com/puzzle/piece/PieceApplication.kt @@ -2,12 +2,17 @@ package com.puzzle.piece import android.app.Application import com.airbnb.mvrx.Mavericks +import com.kakao.sdk.common.KakaoSdk import dagger.hilt.android.HiltAndroidApp @HiltAndroidApp class PieceApplication : Application() { override fun onCreate() { super.onCreate() - Mavericks.initialize(this) + initMavericks() + initKakao() } + + private fun initMavericks() = Mavericks.initialize(this) + private fun initKakao() = KakaoSdk.init(this, BuildConfig.KAKAO_APP_KEY) } \ No newline at end of file diff --git a/feature/auth/build.gradle.kts b/feature/auth/build.gradle.kts index 7aa16351..d139dad7 100644 --- a/feature/auth/build.gradle.kts +++ b/feature/auth/build.gradle.kts @@ -5,3 +5,7 @@ plugins { android { namespace = "com.puzzle.auth" } + +dependencies { + implementation(libs.kakao.user) +} diff --git a/feature/auth/src/main/java/com/puzzle/auth/AuthScreen.kt b/feature/auth/src/main/java/com/puzzle/auth/AuthScreen.kt index eee1cec7..bc09bb1e 100644 --- a/feature/auth/src/main/java/com/puzzle/auth/AuthScreen.kt +++ b/feature/auth/src/main/java/com/puzzle/auth/AuthScreen.kt @@ -1,22 +1,25 @@ package com.puzzle.auth +import android.util.Log import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel +import com.kakao.sdk.user.UserApiClient import com.puzzle.navigation.AuthGraph import com.puzzle.navigation.MatchingGraph import com.puzzle.navigation.NavigationEvent @Composable fun AuthRoute(viewModel: AuthViewModel = hiltViewModel()) { + val context = LocalContext.current - Box( + Column( modifier = Modifier .fillMaxSize() .clickable { @@ -27,8 +30,21 @@ fun AuthRoute(viewModel: AuthViewModel = hiltViewModel()) { ) ) }, - contentAlignment = Alignment.Center, ) { + Text( + text = "카카오 로그인", + fontSize = 30.sp, + modifier = Modifier.clickable { + UserApiClient.instance.loginWithKakaoAccount(context) { token, error -> + if (error != null) { + Log.e("test", "로그인 실패", error) + } else if (token != null) { + Log.i("test", "로그인 성공 ${token.accessToken}") + } + } + } + ) + Text( text = "AuthRoute", fontSize = 30.sp, diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a34f674a..0e6e3bef 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -169,7 +169,7 @@ amplitude-analytics = { module = "com.amplitude:analytics-android", version.ref coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } lottie-compose = { module = "com.airbnb.android:lottie-compose", version.ref = "lottie-compose" } -kakao-common = { module = "com.kakao.sdk:v2-common", version.ref = "kakao" } +kakao-user = { module = "com.kakao.sdk:v2-user", version.ref = "kakao" } mavericks = { module = "com.airbnb.android:mavericks", version.ref = "mavericks" } mavericks-compose = { module = "com.airbnb.android:mavericks-compose", version.ref = "mavericks" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 0e28ba69..c9e86bc6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,6 +18,7 @@ dependencyResolutionManagement { repositories { google() mavenCentral() + maven { url = java.net.URI("https://devrepo.kakao.com/nexus/content/groups/public/") } } }