Skip to content

Commit a03d7fd

Browse files
authored
Merge pull request #79 from YAPP-Github/feat/#71-mypage-api
[feat] #71 마이페이지 UI 수정 및 API 연동
2 parents 7929463 + 4d594ae commit a03d7fd

68 files changed

Lines changed: 1473 additions & 614 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/build.gradle.kts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import kotlin.apply
44
plugins {
55
alias(libs.plugins.neki.android.application)
66
alias(libs.plugins.neki.android.application.compose)
7+
alias(libs.plugins.oss.licenses)
78
}
89

910
val localPropertiesFile = project.rootProject.file("local.properties")
@@ -28,6 +29,26 @@ android {
2829
properties["KAKAO_NATIVE_APP_KEY"].toString()
2930
)
3031
}
32+
33+
signingConfigs {
34+
create("release") {
35+
storeFile = rootProject.file("neki_key_store.jks")
36+
storePassword = properties["STORE_PASSWORD"].toString()
37+
keyAlias = properties["KEY_ALIAS"].toString()
38+
keyPassword = properties["KEY_PASSWORD"].toString()
39+
}
40+
}
41+
buildTypes {
42+
getByName("release") {
43+
isMinifyEnabled = true
44+
signingConfig = signingConfigs.getByName("release")
45+
proguardFiles(
46+
getDefaultProguardFile("proguard-android-optimize.txt"),
47+
"proguard-rules.pro",
48+
)
49+
}
50+
}
51+
3152
}
3253

3354
dependencies {

app/proguard-rules.pro

Lines changed: 188 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,191 @@
55
# For more details, see
66
# http://developer.android.com/guide/developing/tools/proguard.html
77

8-
# If your project uses WebView with JS, uncomment the following
9-
# and specify the fully qualified class name to the JavaScript interface
10-
# class:
11-
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12-
# public *;
13-
#}
14-
15-
# Uncomment this to preserve the line number information for
16-
# debugging stack traces.
17-
#-keepattributes SourceFile,LineNumberTable
18-
19-
# If you keep the line number information, uncomment this to
20-
# hide the original source file name.
21-
#-renamesourcefileattribute SourceFile
8+
# Keep line number information for debugging stack traces.
9+
-keepattributes SourceFile,LineNumberTable
10+
-renamesourcefileattribute SourceFile
11+
12+
# ========================
13+
# Project Classes
14+
# ========================
15+
-keep class com.neki.android.** { *; }
16+
-keepclassmembers class com.neki.android.** { *; }
17+
18+
# ========================
19+
# Kotlin
20+
# ========================
21+
-keep class kotlin.Metadata { *; }
22+
-keepattributes RuntimeVisibleAnnotations
23+
-keepattributes *Annotation*
24+
25+
# Kotlin Coroutines
26+
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
27+
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
28+
-keepclassmembers class kotlinx.coroutines.** {
29+
volatile <fields>;
30+
}
31+
-keepclassmembernames class kotlinx.** {
32+
volatile <fields>;
33+
}
34+
35+
# ========================
36+
# Ktor
37+
# ========================
38+
-keep class io.ktor.** { *; }
39+
-keepclassmembers class io.ktor.** { *; }
40+
-dontwarn io.ktor.**
41+
42+
# ========================
43+
# kotlinx.serialization
44+
# ========================
45+
-keepattributes *Annotation*, InnerClasses
46+
-dontnote kotlinx.serialization.AnnotationsKt
47+
48+
-keepclassmembers @kotlinx.serialization.Serializable class ** {
49+
*** Companion;
50+
}
51+
-if @kotlinx.serialization.Serializable class **
52+
-keepclassmembers class <1>$Companion {
53+
kotlinx.serialization.KSerializer serializer(...);
54+
}
55+
-if @kotlinx.serialization.Serializable class ** {
56+
static **$* *;
57+
}
58+
-keepclassmembers class <2>$<3> {
59+
kotlinx.serialization.KSerializer serializer(...);
60+
}
61+
-if @kotlinx.serialization.Serializable class ** {
62+
public static ** INSTANCE;
63+
}
64+
-keepclassmembers class <1> {
65+
public static <1> INSTANCE;
66+
kotlinx.serialization.KSerializer serializer(...);
67+
}
68+
-keepclassmembers class * {
69+
@kotlinx.serialization.SerialName <fields>;
70+
}
71+
-keep,includedescriptorclasses class com.neki.android.**$$serializer { *; }
72+
-keepclassmembers class com.neki.android.** {
73+
*** Companion;
74+
}
75+
76+
# ========================
77+
# Kakao SDK
78+
# ========================
79+
-keep class com.kakao.sdk.** { *; }
80+
-keepclassmembers class com.kakao.sdk.** { *; }
81+
-dontwarn com.kakao.sdk.**
82+
83+
# Kakao SDK enums (TokenNotFound 등)
84+
-keepclassmembers enum com.kakao.sdk.** {
85+
public static **[] values();
86+
public static ** valueOf(java.lang.String);
87+
<fields>;
88+
}
89+
90+
# ========================
91+
# Hilt / Dagger
92+
# ========================
93+
-keep class dagger.** { *; }
94+
-keep class javax.inject.** { *; }
95+
-keep class * extends dagger.hilt.android.internal.managers.ComponentSupplier { *; }
96+
-keep class * extends dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper { *; }
97+
-keepclassmembers class * {
98+
@dagger.hilt.* <fields>;
99+
@dagger.hilt.* <methods>;
100+
@javax.inject.* <fields>;
101+
@javax.inject.* <methods>;
102+
}
103+
-dontwarn dagger.internal.codegen.**
104+
-dontwarn dagger.hilt.internal.**
105+
106+
# ========================
107+
# Android / Jetpack
108+
# ========================
109+
# Lifecycle
110+
-keep class androidx.lifecycle.** { *; }
111+
-keepclassmembers class * implements androidx.lifecycle.LifecycleObserver {
112+
<init>(...);
113+
}
114+
115+
# Navigation
116+
-keep class androidx.navigation.** { *; }
117+
118+
# Compose
119+
-keep class androidx.compose.** { *; }
120+
-dontwarn androidx.compose.**
121+
122+
# DataStore
123+
-keep class androidx.datastore.** { *; }
124+
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite {
125+
<fields>;
126+
}
127+
128+
# Paging
129+
-keep class androidx.paging.** { *; }
130+
131+
# ========================
132+
# Enums (General)
133+
# ========================
134+
-keepclassmembers enum * {
135+
public static **[] values();
136+
public static ** valueOf(java.lang.String);
137+
<fields>;
138+
}
139+
140+
# ========================
141+
# Timber
142+
# ========================
143+
-dontwarn org.jetbrains.annotations.**
144+
145+
# ========================
146+
# OSS Licenses
147+
# ========================
148+
-keep class com.google.android.gms.oss.licenses.** { *; }
149+
150+
# ========================
151+
# Coil
152+
# ========================
153+
-keep class coil3.** { *; }
154+
-dontwarn coil3.**
155+
156+
# ========================
157+
# Naver Maps
158+
# ========================
159+
-keep class com.naver.maps.** { *; }
160+
-dontwarn com.naver.maps.**
161+
162+
# ========================
163+
# OkHttp (used by Coil)
164+
# ========================
165+
-dontwarn okhttp3.**
166+
-dontwarn okio.**
167+
-keep class okhttp3.** { *; }
168+
-keep class okio.** { *; }
169+
170+
# ========================
171+
# ML Kit Barcode
172+
# ========================
173+
-keep class com.google.mlkit.** { *; }
174+
-dontwarn com.google.mlkit.**
175+
176+
# ========================
177+
# Play Services
178+
# ========================
179+
-keep class com.google.android.gms.** { *; }
180+
-dontwarn com.google.android.gms.**
181+
182+
# ========================
183+
# CameraX
184+
# ========================
185+
-keep class androidx.camera.** { *; }
186+
-dontwarn androidx.camera.**
187+
188+
# ========================
189+
# Missing class warnings suppression
190+
# ========================
191+
-dontwarn java.lang.invoke.StringConcatFactory
192+
-dontwarn org.slf4j.**
193+
-dontwarn org.bouncycastle.**
194+
-dontwarn org.conscrypt.**
195+
-dontwarn org.openjsse.**

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<uses-permission android:name="android.permission.CAMERA" />
66
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
77
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
8+
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
89

910
<uses-feature android:name="android.hardware.camera" />
1011

@@ -40,7 +41,12 @@
4041
</intent-filter>
4142
</activity>
4243

43-
44+
<activity
45+
android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
46+
android:theme="@style/OssLicenses.Theme.OptOutEdgeToEdgeEnforcement" />
47+
<activity
48+
android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
49+
android:theme="@style/OssLicenses.Theme.OptOutEdgeToEdgeEnforcement" />
4450
</application>
4551

4652
<queries>

app/src/main/java/com/neki/android/app/navigation/di/NavigationModule.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.neki.android.app.navigation.di
22

33
import com.neki.android.app.navigation.keys.START_NAV_KEY
4+
import com.neki.android.app.navigation.keys.START_ROOT_NAV_KEY
45
import com.neki.android.app.navigation.keys.TOP_LEVEL_NAV_KEYS
56
import com.neki.android.core.navigation.NavigationState
7+
import com.neki.android.core.navigation.root.RootNavigationState
68
import dagger.Module
79
import dagger.Provides
810
import dagger.hilt.InstallIn
@@ -21,4 +23,12 @@ internal object NavigationModule {
2123
topLevelKeys = TOP_LEVEL_NAV_KEYS.toSet(),
2224
)
2325
}
26+
27+
@Provides
28+
@ActivityRetainedScoped
29+
fun providesRootNavigationState(): RootNavigationState {
30+
return RootNavigationState(
31+
startKey = START_ROOT_NAV_KEY,
32+
)
33+
}
2434
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.neki.android.app.navigation.keys
22

33
import com.neki.android.app.navigation.TopLevelNavItem
4+
import com.neki.android.core.navigation.root.RootNavKey
45
import com.neki.android.feature.archive.api.ArchiveNavKey
56

7+
internal val START_ROOT_NAV_KEY = RootNavKey.Login
68
internal val START_NAV_KEY = ArchiveNavKey.Archive
79
internal val TOP_LEVEL_NAV_KEYS = TopLevelNavItem.entries.map { it.navKey }

app/src/main/res/values/themes.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<resources>
2+
<resources xmlns:tools="http://schemas.android.com/tools">
33

44
<style name="Theme.Neki" parent="android:Theme.Material.Light.NoActionBar">
55
<item name="android:windowLightStatusBar">true</item>
66
<item name="android:statusBarColor">@android:color/transparent</item>
77
<item name="android:navigationBarColor">@android:color/transparent</item>
88
</style>
9+
10+
<style name="OssLicenses.Theme.OptOutEdgeToEdgeEnforcement" parent="Theme.AppCompat">
11+
<item name="android:windowOptOutEdgeToEdgeEnforcement" tools:targetApi="35">true</item>
12+
</style>
913
</resources>

build-logic/src/main/java/com/neki/android/buildlogic/extensions/Android.kt

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,6 @@ internal fun Project.configureAndroid(
2626
jvmTarget = BuildConst.JDK_VERSION.toString()
2727
}
2828

29-
buildTypes {
30-
getByName("release") {
31-
isMinifyEnabled = true
32-
proguardFiles(
33-
getDefaultProguardFile("proguard-android.txt"),
34-
"proguard-rules.pro",
35-
)
36-
}
37-
}
38-
3929
dependencies {
4030
add("detektPlugins", libs.findLibrary("detekt.formatting").get())
4131
}

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ plugins {
1111
alias(libs.plugins.ksp) apply false
1212
alias(libs.plugins.hilt) apply false
1313
alias(libs.plugins.detekt) apply false
14+
alias(libs.plugins.oss.licenses) apply false
1415
}
1516

1617
subprojects {
@@ -24,4 +25,4 @@ subprojects {
2425
toolVersion = rootProject.libs.versions.detekt.get()
2526
config.setFrom(files("$rootDir/detekt-config.yml"))
2627
}
27-
}
28+
}

core/common/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ android {
1010

1111
dependencies {
1212
api(libs.timber)
13+
api(libs.kakao.user)
1314
implementation(libs.androidx.security.crypto)
1415
implementation(libs.androidx.core.ktx)
15-
1616
}

0 commit comments

Comments
 (0)