Skip to content

Commit e1c4bcc

Browse files
authored
[Fix] OSS Licenses 크래시 방지 (#489)
* OSS 라이선스 리소스 누락 시 진입 차단 * play-services-oss-licenses 업데이트 및 Activity 안정화 설정 * chore: change log * AGP 8.9.1 및 compileSdk 36로 업그레이드 * chore: change date * fix: stabilize build toolchain and CI
1 parent e65645f commit e1c4bcc

File tree

10 files changed

+103
-8
lines changed

10 files changed

+103
-8
lines changed

.github/workflows/debug.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ jobs:
3636
distribution: 'temurin'
3737
cache: gradle
3838

39+
- name: Set up Android SDK
40+
uses: android-actions/setup-android@v3
41+
42+
- name: Install Android SDK (API 35)
43+
run: |
44+
sdkmanager --install "platform-tools" "platforms;android-35" "build-tools;35.0.0"
45+
yes | sdkmanager --licenses
46+
3947
- name: Create Local Properties
4048
run: touch local.properties
4149

@@ -170,4 +178,3 @@ jobs:
170178
}
171179
env:
172180
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_APP_DISTRIBUTION_WEBHOOK_URL }}
173-

.github/workflows/release.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,14 @@ jobs:
9191
distribution: 'temurin'
9292
cache: gradle
9393

94+
- name: Set up Android SDK
95+
uses: android-actions/setup-android@v3
96+
97+
- name: Install Android SDK (API 35)
98+
run: |
99+
sdkmanager --install "platform-tools" "platforms;android-35" "build-tools;35.0.0"
100+
yes | sdkmanager --licenses
101+
94102
- name: Grant execute permission for gradlew
95103
run: chmod +x gradlew
96104

app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ plugins {
1515

1616
android {
1717
namespace = "com.eatssu.android"
18-
compileSdk = 35
18+
compileSdk = 36
1919

2020
/**
2121
* 현재 팀 내 안드로이드 OS 버전

app/src/main/AndroidManifest.xml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,26 @@
5757
</service>
5858

5959

60+
6061
<!-- 오픈소스 -->
6162
<meta-data
6263
android:name="com.google.android.gms.oss.licenses.enabled"
6364
android:value="true" />
6465

66+
<activity
67+
android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
68+
android:excludeFromRecents="true"
69+
android:exported="false"
70+
android:noHistory="true"
71+
tools:node="merge" />
72+
73+
<activity
74+
android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
75+
android:excludeFromRecents="true"
76+
android:exported="false"
77+
android:noHistory="true"
78+
tools:node="merge" />
79+
6580
<meta-data
6681
android:name="com.naver.maps.map.NCP_KEY_ID"
6782
android:value="${NAVER_MAPS_CLIENT_ID}" />
@@ -232,4 +247,4 @@
232247
</activity>
233248
</application>
234249

235-
</manifest>
250+
</manifest>

app/src/main/java/com/eatssu/android/presentation/mypage/MyPageFragment.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,26 @@ class MyPageFragment : BaseFragment<FragmentMyPageBinding>(ScreenId.MYPAGE_MAIN)
234234
}
235235

236236
private fun moveToOss() {
237+
val context = requireContext()
237238
try {
238-
startActivity(Intent(requireContext(), OssLicensesMenuActivity::class.java))
239+
val licensesId = context.resources.getIdentifier("third_party_licenses", "raw", context.packageName)
240+
val metadataId = context.resources.getIdentifier(
241+
"third_party_license_metadata",
242+
"raw",
243+
context.packageName
244+
)
245+
if (licensesId == 0 || metadataId == 0) {
246+
showErrorToast(getString(R.string.toast_oss_load_fail))
247+
Timber.e(
248+
"OSS raw resource missing. third_party_licenses=$licensesId third_party_license_metadata=$metadataId"
249+
)
250+
return
251+
}
252+
253+
startActivity(
254+
Intent(context, OssLicensesMenuActivity::class.java)
255+
.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
256+
)
239257
} catch (e: Exception) {
240258
showErrorToast(getString(R.string.toast_oss_load_fail))
241259
Timber.e("Error opening OSS Licenses: ${e.message}")

app/src/main/res/raw/keep.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources xmlns:tools="http://schemas.android.com/tools"
3+
tools:keep="@raw/third_party_licenses,@raw/third_party_license_metadata" />

core/common/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ plugins {
22
alias(libs.plugins.android.library)
33
alias(libs.plugins.kotlin.android)
44
alias(libs.plugins.kotlin.serialization)
5-
alias(libs.plugins.google.services)
65
}
76

87
android {
@@ -47,4 +46,4 @@ dependencies {
4746
implementation(libs.firebase.analytics)
4847

4948
implementation(libs.kotlinx.serialization.json)
50-
}
49+
}

core/design-system/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,4 @@ dependencies {
6060

6161
//coil: 이미지 로딩
6262
implementation(libs.coil.compose)
63-
}
63+
}

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#Fri Feb 17 11:26:14 KST 2023
1+
#Wed Mar 04 15:19:02 KST 2026
22
distributionBase=GRADLE_USER_HOME
33
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
44
distributionPath=wrapper/dists

gradlew

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)