Skip to content

Commit b77aed7

Browse files
committed
[ADD/#338] git pull from develop
2 parents 891209f + 77ca8ba commit b77aed7

55 files changed

Lines changed: 35367 additions & 9 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.

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,16 @@
3333
<br>
3434

3535
## DEPENDENCY GRAPH
36-
<img src="https://github.com/user-attachments/assets/0d88e4fe-b170-4aae-83e6-c9017b2bc893"/>
36+
<img src="https://github.com/user-attachments/assets/a3f8cda6-0057-45ed-abac-714f25cb2243"/>
3737

3838
## MODULE & PACKAGE CONVENTION
3939

4040
```
4141
4242
🗃️app
4343
44+
🗃️baselineprofile
45+
4446
🗃️build-logic
4547
┣ 📂️convention
4648
┗ 📂extension

app/build.gradle.kts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import java.util.Properties
21
import com.terning.build_logic.extension.setNamespace
2+
import java.util.Properties
33

44
plugins {
55
alias(libs.plugins.terning.application)
6+
alias(libs.plugins.baselineprofile)
7+
alias(libs.plugins.kotlin.serialization)
68
}
79

810
val properties = Properties().apply {
@@ -44,6 +46,9 @@ android {
4446
}
4547

4648
buildTypes {
49+
debug {
50+
applicationIdSuffix = ".debug"
51+
}
4752
release {
4853
isMinifyEnabled = false
4954
proguardFiles(
@@ -52,6 +57,12 @@ android {
5257
)
5358
signingConfig = signingConfigs.getByName("release")
5459
}
60+
create("benchmark") {
61+
signingConfig = signingConfigs.getByName("debug")
62+
matchingFallbacks += listOf("release")
63+
isDebuggable = false
64+
proguardFiles("baseline-profiles-rules.pro")
65+
}
5566
}
5667
kotlinOptions {
5768
jvmTarget = libs.versions.jvmTarget.get()
@@ -64,7 +75,6 @@ android {
6475
}
6576
}
6677

67-
6878
dependencies {
6979
// feature
7080
implementation(projects.feature.main)
@@ -81,6 +91,11 @@ dependencies {
8191
implementation(projects.data.tokenreissue)
8292
implementation(projects.data.search)
8393

94+
// baseline profile
95+
baselineProfile(projects.baselineprofile)
96+
implementation(libs.androidx.profileinstaller)
97+
8498
implementation(libs.timber)
8599
implementation(libs.kakao.user)
100+
implementation(libs.kotlinx.serialization.json)
86101
}

app/proguard-rules.pro

Lines changed: 128 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,131 @@
1818

1919
# If you keep the line number information, uncomment this to
2020
# hide the original source file name.
21-
#-renamesourcefileattribute SourceFile
21+
#-renamesourcefileattribute SourceFile
22+
23+
##---------------Begin: Kakao SDK ----------
24+
-keep class com.kakao.sdk.**.model.* { <fields>; }
25+
-keep class * extends com.google.gson.TypeAdapter
26+
##---------------END: Kakao SDK ----------
27+
28+
##---------------Begin: Okio ----------
29+
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
30+
-dontwarn org.codehaus.mojo.animal_sniffer.*
31+
32+
##---------------End: Okio ----------
33+
34+
##---------------Begin: Retrofit ----------
35+
36+
# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
37+
# EnclosingMethod is required to use InnerClasses.
38+
-keepattributes Signature, InnerClasses, EnclosingMethod
39+
40+
# Retrofit does reflection on method and parameter annotations.
41+
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
42+
43+
# Keep annotation default values (e.g., retrofit2.http.Field.encoded).
44+
-keepattributes AnnotationDefault
45+
46+
# Retain service method parameters when optimizing.
47+
-keepclassmembers,allowshrinking,allowobfuscation interface * {
48+
@retrofit2.http.* <methods>;
49+
}
50+
51+
# Ignore annotation used for build tooling.
52+
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
53+
54+
# Ignore JSR 305 annotations for embedding nullability information.
55+
-dontwarn javax.annotation.**
56+
57+
# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
58+
-dontwarn kotlin.Unit
59+
60+
# Top-level functions that can only be used by Kotlin.
61+
-dontwarn retrofit2.KotlinExtensions
62+
-dontwarn retrofit2.KotlinExtensions$*
63+
64+
# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
65+
# and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
66+
-if interface * { @retrofit2.http.* <methods>; }
67+
-keep,allowobfuscation interface <1>
68+
69+
# Keep generic signature of Call, Response (R8 full mode strips signatures from non-kept items).
70+
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
71+
-keep,allowobfuscation,allowshrinking class retrofit2.Response
72+
73+
# With R8 full mode generic signatures are stripped for classes that are not
74+
# kept. Suspend functions are wrapped in continuations where the type argument
75+
# is used.
76+
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
77+
78+
# Please add these rules to your existing keep rules in order to suppress warnings.
79+
# This is generated automatically by the Android Gradle plugin.
80+
-dontwarn com.google.auto.service.AutoService
81+
-dontwarn net.ltgt.gradle.incap.IncrementalAnnotationProcessor
82+
-dontwarn net.ltgt.gradle.incap.IncrementalAnnotationProcessorType
83+
84+
##---------------End: Retrofit ----------
85+
86+
##---------------Begin: OkHttp -------------
87+
88+
# JSR 305 annotations are for embedding nullability information.
89+
-dontwarn javax.annotation.**
90+
91+
# A resource is loaded with a relative path so the package of this class must be preserved.
92+
-adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz
93+
94+
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
95+
-dontwarn org.codehaus.mojo.animal_sniffer.*
96+
97+
# OkHttp platform used only on JVM and when Conscrypt and other security providers are available.
98+
-dontwarn okhttp3.internal.platform.**
99+
-dontwarn org.conscrypt.**
100+
-dontwarn org.bouncycastle.**
101+
-dontwarn org.openjsse.**
102+
103+
##---------------End : OkHttp --------------
104+
105+
##---------------Begin: google admob ----------
106+
-keep public class com.google.android.gms.ads.** { public *; }
107+
-keep public class com.google.ads.** { public *; }
108+
##---------------END: google admob ----------
109+
110+
##---------------Begin: kotlin serialization ----------
111+
-keepattributes *Annotation*, InnerClasses
112+
-dontnote kotlinx.serialization.AnnotationsKt # core serialization annotations
113+
114+
# kotlinx-serialization-json specific. Add this if you have java.lang.NoClassDefFoundError kotlinx.serialization.json.JsonObjectSerializer
115+
-keepclassmembers class kotlinx.serialization.json.** {
116+
*** Companion;
117+
}
118+
-keepclasseswithmembers class kotlinx.serialization.json.** {
119+
kotlinx.serialization.KSerializer serializer(...);
120+
}
121+
122+
# Application rules
123+
124+
# Change here com.yourcompany.yourpackage
125+
-keepclassmembers @kotlinx.serialization.Serializable class com.terning.point.** {
126+
# lookup for plugin generated serializable classes
127+
*** Companion;
128+
# lookup for serializable objects
129+
*** INSTANCE;
130+
kotlinx.serialization.KSerializer serializer(...);
131+
}
132+
# lookup for plugin generated serializable classes
133+
-if @kotlinx.serialization.Serializable class com.terning.point.**
134+
-keepclassmembers class com.terning.point.<1>$Companion {
135+
kotlinx.serialization.KSerializer serializer(...);
136+
}
137+
138+
# Serialization supports named companions but for such classes it is necessary to add an additional rule.
139+
# This rule keeps serializer and serializable class from obfuscation. Therefore, it is recommended not to use wildcards in it, but to write rules for each such class.
140+
-keep class com.terning.point.SerializableClassWithNamedCompanion$$serializer {
141+
*** INSTANCE;
142+
}
143+
144+
-keep class com.terning.point.** {
145+
@kotlinx.serialization.SerialName <fields>;
146+
}
147+
148+
##---------------END: kotlin serialization ----------
65.5 KB
Loading
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<vector
3+
android:height="108dp"
4+
android:width="108dp"
5+
android:viewportHeight="108"
6+
android:viewportWidth="108"
7+
xmlns:android="http://schemas.android.com/apk/res/android">
8+
<path android:fillColor="#3DDC84"
9+
android:pathData="M0,0h108v108h-108z"/>
10+
<path android:fillColor="#00000000" android:pathData="M9,0L9,108"
11+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
12+
<path android:fillColor="#00000000" android:pathData="M19,0L19,108"
13+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
14+
<path android:fillColor="#00000000" android:pathData="M29,0L29,108"
15+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
16+
<path android:fillColor="#00000000" android:pathData="M39,0L39,108"
17+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
18+
<path android:fillColor="#00000000" android:pathData="M49,0L49,108"
19+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
20+
<path android:fillColor="#00000000" android:pathData="M59,0L59,108"
21+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
22+
<path android:fillColor="#00000000" android:pathData="M69,0L69,108"
23+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
24+
<path android:fillColor="#00000000" android:pathData="M79,0L79,108"
25+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
26+
<path android:fillColor="#00000000" android:pathData="M89,0L89,108"
27+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
28+
<path android:fillColor="#00000000" android:pathData="M99,0L99,108"
29+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
30+
<path android:fillColor="#00000000" android:pathData="M0,9L108,9"
31+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
32+
<path android:fillColor="#00000000" android:pathData="M0,19L108,19"
33+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
34+
<path android:fillColor="#00000000" android:pathData="M0,29L108,29"
35+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
36+
<path android:fillColor="#00000000" android:pathData="M0,39L108,39"
37+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
38+
<path android:fillColor="#00000000" android:pathData="M0,49L108,49"
39+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
40+
<path android:fillColor="#00000000" android:pathData="M0,59L108,59"
41+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
42+
<path android:fillColor="#00000000" android:pathData="M0,69L108,69"
43+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
44+
<path android:fillColor="#00000000" android:pathData="M0,79L108,79"
45+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
46+
<path android:fillColor="#00000000" android:pathData="M0,89L108,89"
47+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
48+
<path android:fillColor="#00000000" android:pathData="M0,99L108,99"
49+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
50+
<path android:fillColor="#00000000" android:pathData="M19,29L89,29"
51+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
52+
<path android:fillColor="#00000000" android:pathData="M19,39L89,39"
53+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
54+
<path android:fillColor="#00000000" android:pathData="M19,49L89,49"
55+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
56+
<path android:fillColor="#00000000" android:pathData="M19,59L89,59"
57+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
58+
<path android:fillColor="#00000000" android:pathData="M19,69L89,69"
59+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
60+
<path android:fillColor="#00000000" android:pathData="M19,79L89,79"
61+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
62+
<path android:fillColor="#00000000" android:pathData="M29,19L29,89"
63+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
64+
<path android:fillColor="#00000000" android:pathData="M39,19L39,89"
65+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
66+
<path android:fillColor="#00000000" android:pathData="M49,19L49,89"
67+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
68+
<path android:fillColor="#00000000" android:pathData="M59,19L59,89"
69+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
70+
<path android:fillColor="#00000000" android:pathData="M69,19L69,89"
71+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
72+
<path android:fillColor="#00000000" android:pathData="M79,19L79,89"
73+
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
74+
</vector>

feature/main/src/main/res/mipmap-anydpi-v26/ic_terning_launcher.xml renamed to app/src/debug/res/mipmap-anydpi-v26/ic_terning_launcher.xml

File renamed without changes.

feature/main/src/main/res/mipmap-anydpi-v26/ic_terning_launcher_round.xml renamed to app/src/debug/res/mipmap-anydpi-v26/ic_terning_launcher_round.xml

File renamed without changes.
1.77 KB
Loading
3.17 KB
Loading
3.25 KB
Loading

0 commit comments

Comments
 (0)