Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ internal class AndroidFeatureConventionPlugin : Plugin<Project> {
implementation(project(path = ":core:ui"))
implementation(project(path = ":feature:screens"))

implementation(libs.kotlinx.collections.immutable)
implementation(libs.compose.effects)

implementation(libs.bundles.circuit)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,7 @@ class HomePresenter(
is HomeUiEvent.OnTabSelected -> {
navigator.resetRoot(
newRoot = event.tab.screen,
saveState = true,
restoreState = true,
options = Navigator.StateOptions.SaveAndRestore,
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,7 @@ class LibraryPresenter(
is LibraryUiEvent.OnTabSelected -> {
navigator.resetRoot(
newRoot = event.tab.screen,
saveState = true,
restoreState = true,
options = Navigator.StateOptions.SaveAndRestore,
)
}

Expand Down
18 changes: 9 additions & 9 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
[versions]
## App Configuration
minSdk = "28"
targetSdk = "35"
compileSdk = "35"
targetSdk = "36"
compileSdk = "36"
Comment on lines +4 to +5
Copy link

@coderabbitai coderabbitai bot Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

find . -name "gradle/libs.versions.toml" -type f

Repository: YAPP-Github/Reed-Android

Length of output: 50


🏁 Script executed:

cat -n gradle/libs.versions.toml | head -60

Repository: YAPP-Github/Reed-Android

Length of output: 1531


🌐 Web query:

Android SDK 36 portrait orientation warning issue

💡 Result:

Short answer: This is expected with Android SDK 36 (Android 16). Apps targeting SDK 36 will have manifest orientation/resize restrictions ignored on large screens (sw600dp and up), so a portrait-locked app can be forced into other orientations or resizable windows on tablets/foldables/Chromebooks. You can either make your UI adaptive, opt out temporarily for compatibility, or limit distribution. (googblogs.com)

What to do (concise):

  • Make layouts adaptive (support both portrait & landscape / windowed sizes). (googblogs.com)
  • Temporary opt-out: add in :

    (Note: opt-out will be ignored for sw>=600dp starting API 37). (stackoverflow.com)
  • If you must stay portrait and cannot adapt: restrict distribution to smaller devices via or exclude devices in Play Console. (stackoverflow.com)

If you want, I can: show the exact manifest snippet, checklist for adapting layouts, or help test with Android 16 emulator images.

Citations:


🏁 Script executed:

find . -name "AndroidManifest.xml" -type f

Repository: YAPP-Github/Reed-Android

Length of output: 146


🏁 Script executed:

rg -i "screenorientation|PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY|supports-screens" --type xml

Repository: YAPP-Github/Reed-Android

Length of output: 158


🏁 Script executed:

rg "screenOrientation|PROPERTY_COMPAT" -A 2 -B 2

Repository: YAPP-Github/Reed-Android

Length of output: 514


SDK 36 업그레이드는 portrait 화면 고정 관련 주요 변경사항이 필요합니다.

Android SDK 36 (Android 16)에서 portrait로 고정된 앱은 큰 화면(sw600dp 이상)에서 강제로 landscape 또는 resizable 상태로 변경됩니다. 현재 feature/main/src/main/AndroidManifest.xml의 MainActivity에 android:screenOrientation="portrait" 설정이 있으나, 이에 대한 완화 조치가 없습니다.

다음 중 하나를 구현하세요:

  1. UI를 반응형으로 변경하여 portrait과 landscape를 모두 지원
  2. application 태그에 호환성 속성 추가: <property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
  3. 앱 배포를 작은 기기로 제한
🤖 Prompt for AI Agents
In `@gradle/libs.versions.toml` around lines 4 - 5, MainActivity is forcing
portrait via android:screenOrientation="portrait" in
feature/main/src/main/AndroidManifest.xml which on SDK 36 will be overridden on
large screens; fix by either (A) making MainActivity/your UI responsive to both
orientations (remove the android:screenOrientation attribute from the
MainActivity element and update layouts to support landscape), or (B) allow
restricted resizability by adding the compat property to the <application>
element: set android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY to
true, or (C) explicitly restrict distribution to small screens via
manifest/device compatibility settings; choose one approach and update the
MainActivity manifest entry and/or the <application> tag accordingly.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. 앱 배포를 작은 기기로 제한

이게 가능해? 현재 play console에서 지원하는지 궁금해

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🌐 Web query:

Google Play Console device screen size distribution restriction 2026

💡 Result:

Short answer

  • Google Play Console does let you restrict availability by device (device catalog) and by manifest filters (e.g., the rarely‑recommended ) but Google is moving away from letting apps block large‑screen behavior at runtime — Android 16 removes app-level orientation/resizability locks on large screens and Play’s target‑SDK schedule makes those changes relevant for developers in 2026. [1][2][3][4]

What that means (concise)

  • To exclude specific models or hardware characteristics use the Play Console Device catalog (manual excludes or spec/performance rules). This still controls which devices can see/install your app. [2]
  • Do NOT rely on to control distribution unless you intentionally want to dramatically shrink your install base — it’s an advanced filter and will exclude all unspecified screen/density combos. Use Device catalog excludes instead. [3]
  • Starting with Android 16 (changes rolling into Play requirements in 2026) platform behavior will force apps to be resizable and honor both orientations on “large screen” devices (smallest width ≥600dp). Test and make your app adaptive rather than attempting to block large‑screen devices; Google’s Play target‑SDK deadlines make this effective for many apps in 2026 (target API changes required Aug 2026 for API 36 per Google’s guidance). [1][4]

If you want, I can:

  • show exactly where to exclude devices in the Play Console and screenshots, or
  • scan your manifest for problematic filters and suggest minimal edits.

Sources

  • Android developers blog — Android 16 changes (resizability/orientation, large‑screen behavior). [1]
  • Google Play Console — Device catalog (view/exclude devices). [2]
  • Google Play filters docs — and manifest filtering guidance. [3]
  • Google Play target API requirements / timeline (dates for target SDK changes affecting 2026). [4]

@easyhooon 네, 가능합니다! Play Console에서 Device catalog 기능을 통해 특정 기기나 화면 크기별로 앱 배포를 제한할 수 있습니다.

Play Console의 Device catalog에서 특정 모델을 수동으로 제외하거나 하드웨어 사양/성능 규칙으로 필터링할 수 있습니다.

실제 구현 방법:

  1. Play Console Device catalog 사용 (권장):

    • Play Console → 앱 선택 → Release → Device catalog에서 태블릿/폴더블 기기를 수동으로 제외
    • 화면 크기나 특정 기기 모델 기준으로 필터링 가능
  2. Manifest의 <compatible-screens> (비권장):

    • 이 방식은 지정되지 않은 모든 화면/밀도 조합을 제외하므로 설치 가능 기기가 급격히 줄어듭니다.

다만 주의사항:
Android 16부터 큰 화면(sw600dp 이상) 기기에서는 앱의 orientation/resizability 제한이 플랫폼 수준에서 무시되며, Google의 2026년 target SDK 정책으로 인해 많은 앱에 영향을 줄 예정입니다.

권장 사항:
기기 제한보다는 반응형 UI 구현이 장기적으로 더 나은 선택입니다. Google의 방향성이 앱을 adaptive하게 만드는 것이므로, 현재 portrait 고정을 유지하면서 점진적으로 landscape 지원을 추가하는 것을 고려해보세요.

필요하시면 Play Console의 Device catalog 설정 방법이나 반응형 UI 구현 가이드를 더 자세히 안내해드릴 수 있습니다! 🐰

/)/)

(. .)
( づ💡


🧠 Learnings used
Learnt from: seoyoon513
Repo: YAPP-Github/Reed-Android PR: 204
File: app/src/main/kotlin/com/ninecraft/booket/ReedFirebaseMessagingService.kt:80-91
Timestamp: 2025-10-28T05:53:09.370Z
Learning: Reed-Android 프로젝트의 minSdk는 28이므로, API 26+ (Android O) 이상에서만 사용 가능한 API (예: NotificationChannel)에 대한 런타임 SDK 버전 체크를 제안하지 않아야 함

versionName = "1.3.0"
versionCode = "9"
packageName = "com.ninecraft.booket"

## Android gradle plugin
android-gradle-plugin = "8.12.0"
android-gradle-plugin = "8.12.3"

## AndroidX
androidx-core = "1.16.0"
androidx-activity-compose = "1.10.1"
androidx-core = "1.17.0"
androidx-activity-compose = "1.12.2"
androidx-startup = "1.2.0"
androidx-splash = "1.2.0"
androidx-datastore = "1.2.0"
androidx-camera = "1.5.2"

## Compose
androidx-compose-bom = "2025.07.00"
androidx-compose-bom = "2026.01.00"
androidx-compose-material3 = "1.4.0"
compose-stable-marker = "1.0.7"
compose-effects = "0.1.4"
Expand All @@ -43,17 +43,17 @@ okhttp = "5.3.2"
retrofit = "3.0.0"

## Circuit
circuit = "0.30.0"
circuit = "0.32.0"

## Logging
logger = "2.2.0"

## Kakao Login
kakao-core = "2.22.0"
kakao-core = "2.23.2"

## Image Load
coil-compose = "2.7.0"
landscapist = "2.5.1"
landscapist = "2.8.2"

## Lottie
lottie = "6.7.1"
Expand Down
Loading