Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77eea9cf11 | ||
|
|
a00f009b44 |
@@ -20,8 +20,8 @@ android {
|
||||
applicationId = "com.example.shiftalarm"
|
||||
minSdk = 26
|
||||
targetSdk = 35
|
||||
versionCode = 113
|
||||
versionName = "1.1.3"
|
||||
versionCode = 115
|
||||
versionName = "1.1.5"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<!-- Alarm & Full Screen -->
|
||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
||||
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||
|
||||
<!-- Service & Notification -->
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# Changelog
|
||||
|
||||
## [1.1.5] - 2026-08-14
|
||||
### Fixed
|
||||
- **근무 변경 모달 팝업 버튼 겹침 현상 완벽 수정**: ConstraintLayout Flow 충돌을 제거하고 3행 리니어 그리드로 전면 개편하여 모든 버튼이 겹침 없이 정렬되도록 수정
|
||||
- **업데이트 정보 자동 기입 및 실시간 동기화 완전 자동화**: 릴리즈 시 체인지로그 및 원격 동기화가 누락 없이 자동 기입되도록 시스템 고도화
|
||||
|
||||
## [1.1.4] - 2026-08-14
|
||||
### Added
|
||||
- **기기 사용 중 전체화면 알람 팝업 보장**: SYSTEM_ALERT_WINDOW 및 백그라운드 액티비티 시작 모드 적용으로 사용 중에도 전체화면 알람창 즉시 표시
|
||||
- **설정 화면 상단 닫기(X) 아이콘 배치**: 하단 고정 닫기 바를 제거하고 상단에 배치하여 탭 전체 화면 공간 극대화
|
||||
|
||||
## [1.1.3] - 2026-08-14
|
||||
### Added
|
||||
- **하루 메모 저장/삭제 아이콘 원형 컨테이너 적용**: 설정 스타일의 블루(저장) / 레드(삭제) 아이콘 컨테이너로 통일하여 세련된 디자인 제공
|
||||
|
||||
@@ -44,16 +44,6 @@ class AlarmActivity : AppCompatActivity() {
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
// ForegroundService가 실행 중이면 먼저 중지
|
||||
stopService(Intent(this, AlarmForegroundService::class.java))
|
||||
|
||||
// Service 중지 후 약간의 지연을 두어 AudioFocus가 완전히 해제되도록 함
|
||||
try {
|
||||
Thread.sleep(100)
|
||||
} catch (e: InterruptedException) {
|
||||
// 무시
|
||||
}
|
||||
|
||||
enableEdgeToEdge()
|
||||
binding = ActivityAlarmBinding.inflate(layoutInflater)
|
||||
binding.root.background = ContextCompat.getDrawable(this, R.drawable.bg_alarm_gradient)
|
||||
@@ -467,6 +457,10 @@ class AlarmActivity : AppCompatActivity() {
|
||||
} catch (e: Exception) {}
|
||||
vibrator = null
|
||||
|
||||
try {
|
||||
stopService(Intent(this, AlarmForegroundService::class.java))
|
||||
} catch (e: Exception) {}
|
||||
|
||||
val nm = getSystemService(Context.NOTIFICATION_SERVICE) as android.app.NotificationManager
|
||||
nm.cancel(1)
|
||||
}
|
||||
|
||||
@@ -78,9 +78,20 @@ class AlarmForegroundService : Service() {
|
||||
|
||||
// 5. 사용 중일 때도 즉시 전체화면 AlarmActivity 화면 띄우기
|
||||
try {
|
||||
startActivity(fullScreenIntent)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
||||
val options = android.app.ActivityOptions.makeBasic().apply {
|
||||
setPendingIntentBackgroundActivityStartMode(android.app.ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
|
||||
}
|
||||
fullScreenPendingIntent.send(this, 0, null, null, null, null, options.toBundle())
|
||||
} else {
|
||||
fullScreenPendingIntent.send()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
try {
|
||||
startActivity(fullScreenIntent)
|
||||
} catch (e2: Exception) {
|
||||
e2.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
return START_NOT_STICKY
|
||||
|
||||
@@ -89,11 +89,31 @@ class AlarmReceiver : BroadcastReceiver() {
|
||||
putExtra("EXTRA_SNOOZE_REPEAT", intent?.getIntExtra("EXTRA_SNOOZE_REPEAT", 3) ?: 3)
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_REORDER_TO_FRONT or Intent.FLAG_ACTIVITY_NO_USER_ACTION)
|
||||
}
|
||||
|
||||
val pendingLaunch = android.app.PendingIntent.getActivity(
|
||||
context,
|
||||
200,
|
||||
activityIntent,
|
||||
android.app.PendingIntent.FLAG_UPDATE_CURRENT or android.app.PendingIntent.FLAG_IMMUTABLE
|
||||
)
|
||||
|
||||
try {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
||||
val options = android.app.ActivityOptions.makeBasic().apply {
|
||||
setPendingIntentBackgroundActivityStartMode(android.app.ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
|
||||
}
|
||||
pendingLaunch.send(context, 0, null, null, null, null, options.toBundle())
|
||||
} else {
|
||||
pendingLaunch.send()
|
||||
}
|
||||
Log.d(TAG, "AlarmActivity PendingIntent 전송 완료")
|
||||
} catch (e: Exception) {
|
||||
try {
|
||||
context.startActivity(activityIntent)
|
||||
Log.d(TAG, "AlarmActivity 즉시 실행 완료")
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "AlarmActivity 실행 실패", e)
|
||||
Log.d(TAG, "AlarmActivity 직접 startActivity 완료")
|
||||
} catch (e2: Exception) {
|
||||
Log.e(TAG, "AlarmActivity 실행 실패", e2)
|
||||
}
|
||||
}
|
||||
|
||||
} catch (e: Exception) {
|
||||
|
||||
@@ -132,6 +132,6 @@ class NoticeActivity : AppCompatActivity() {
|
||||
notices.add(NoticeItem("v$currentVersion 업데이트 정보", currentDate, currentBody.toString().trim()))
|
||||
}
|
||||
|
||||
return notices.take(7)
|
||||
return notices.take(15)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,8 +49,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
val targetTab = intent.getIntExtra("TARGET_TAB", 0)
|
||||
binding.viewPager.setCurrentItem(targetTab, false)
|
||||
|
||||
binding.btnSave.text = "닫기"
|
||||
binding.btnSave.setOnClickListener {
|
||||
binding.btnCloseSettings.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,28 +7,39 @@
|
||||
android:background="@drawable/bg_mesh_gradient"
|
||||
android:id="@+id/settings_root">
|
||||
|
||||
<!-- Top Header: Title + Close Icon Button -->
|
||||
<LinearLayout
|
||||
android:id="@+id/settingsHeader"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:paddingStart="24dp"
|
||||
android:paddingEnd="24dp"
|
||||
android:paddingEnd="16dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settingsTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="설정"
|
||||
android:textColor="@color/text_primary"
|
||||
android:textSize="32sp"
|
||||
android:textSize="30sp"
|
||||
android:textStyle="bold"
|
||||
android:letterSpacing="-0.03"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btnCloseSettings"
|
||||
android:layout_width="44dp"
|
||||
android:layout_height="44dp"
|
||||
android:src="@drawable/ic_close"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
app:tint="@color/text_primary"
|
||||
android:padding="10dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
@@ -46,33 +57,12 @@
|
||||
android:background="@android:color/transparent"
|
||||
app:layout_constraintTop_toBottomOf="@id/settingsHeader"/>
|
||||
|
||||
<!-- Full-height ViewPager2 without cramped bottom bar -->
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/viewPager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/tabLayout"
|
||||
app:layout_constraintBottom_toTopOf="@id/bottomActionLayout"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/bottomActionLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="20dp"
|
||||
android:background="@android:color/transparent"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btnSave"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="58dp"
|
||||
android:text="닫기"
|
||||
android:textSize="17sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="#FFFFFF"
|
||||
app:cornerRadius="29dp"
|
||||
android:backgroundTint="@color/primary"
|
||||
android:elevation="6dp"
|
||||
android:stateListAnimator="@null"/>
|
||||
</LinearLayout>
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -49,62 +49,139 @@
|
||||
android:letterSpacing="-0.02"/>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- 5-Column Grid Refactored -->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<!-- Row 1 -->
|
||||
<TextView android:id="@+id/btnJu" style="@style/ShiftCircleButton" android:text="주" android:textColor="@color/shift_ju"/>
|
||||
<TextView android:id="@+id/btnSeok" style="@style/ShiftCircleButton" android:text="석" android:textColor="@color/shift_seok"/>
|
||||
<TextView android:id="@+id/btnYa" style="@style/ShiftCircleButton" android:text="야" android:textColor="@color/shift_ya"/>
|
||||
<TextView android:id="@+id/btnJuMat" style="@style/ShiftCircleButton" android:text="주맞" android:textSize="13sp" android:textColor="@color/shift_jumat"/>
|
||||
<TextView android:id="@+id/btnYaMat" style="@style/ShiftCircleButton" android:text="야맞" android:textSize="13sp" android:textColor="@color/shift_yamat"/>
|
||||
|
||||
<!-- Row 2 -->
|
||||
<TextView android:id="@+id/btnOff" style="@style/ShiftCircleButton" android:text="휴" android:textColor="@color/shift_off"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
<TextView android:id="@+id/btnWolcha" style="@style/ShiftCircleButton" android:text="월차" android:textSize="13sp" android:textColor="@color/secondary"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
<TextView android:id="@+id/btnYeoncha" style="@style/ShiftCircleButton" android:text="연차" android:textSize="13sp" android:textColor="@color/secondary"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
<TextView android:id="@+id/btnBanwol" style="@style/ShiftCircleButton" android:text="반월" android:textSize="13sp" android:textColor="@color/shift_red"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
<TextView android:id="@+id/btnBannyeon" style="@style/ShiftCircleButton" android:text="반년" android:textSize="13sp" android:textColor="@color/shift_red"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<!-- Row 3 -->
|
||||
<TextView android:id="@+id/btnEdu" style="@style/ShiftCircleButton" android:text="교육" android:textSize="13sp" android:textColor="@color/primary"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
<TextView android:id="@+id/btnReset" style="@style/ShiftCircleButton" android:text="초기" android:textSize="13sp" android:textColor="@color/text_secondary"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
<TextView android:id="@+id/btnManual" style="@style/ShiftCircleButton" android:text="직접" android:textSize="14sp" android:textColor="@color/shift_gray"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.constraintlayout.helper.widget.Flow
|
||||
android:id="@+id/gridFlow"
|
||||
<!-- 3-Row Clean Shift Buttons Grid (Zero Overlap Guaranteed) -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:constraint_referenced_ids="btnJu,btnSeok,btnYa,btnJuMat,btnYaMat, btnOff,btnWolcha,btnYeoncha,btnBanwol,btnBannyeon, btnEdu,btnReset,btnManual"
|
||||
app:flow_wrapMode="aligned"
|
||||
app:flow_maxElementsWrap="5"
|
||||
app:flow_horizontalStyle="packed"
|
||||
app:flow_horizontalGap="8dp"
|
||||
app:flow_verticalGap="12dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
android:orientation="vertical">
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<!-- Row 1: 주, 석, 야, 주맞, 야맞 -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center"
|
||||
android:layout_marginBottom="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnJu"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="주"
|
||||
android:textColor="@color/shift_ju"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnSeok"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="석"
|
||||
android:textColor="@color/shift_seok"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnYa"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="야"
|
||||
android:textColor="@color/shift_ya"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnJuMat"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="주맞"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/shift_jumat"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnYaMat"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="야맞"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/shift_yamat"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Row 2: 휴, 월차, 연차, 반월, 반년 -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center"
|
||||
android:layout_marginBottom="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnOff"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="휴"
|
||||
android:textColor="@color/shift_off"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnWolcha"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="월차"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/secondary"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnYeoncha"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="연차"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/secondary"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnBanwol"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="반월"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/shift_red"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnBannyeon"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="반년"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/shift_red"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Row 3: 교육, 원래대로(초기), 직접 -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnEdu"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="교육"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/primary"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnReset"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="초기"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/text_secondary"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btnManual"
|
||||
style="@style/ShiftCircleButton"
|
||||
android:text="직접"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/shift_gray"
|
||||
android:layout_marginHorizontal="5dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/memoDivider"
|
||||
|
||||
+11
-14
@@ -6,18 +6,15 @@ import shutil
|
||||
|
||||
token = "e3b515eaa0a6683c921ca3bf718e281ed30a6075"
|
||||
owner_repo = "sanjeok77/ShiftRing"
|
||||
tag = "v1.1.3"
|
||||
title = "v1.1.3 - 하루 메모 헤더 아이콘 컨테이너 스타일 적용, 사용 설명서 최신화 및 닫기 아이콘 교체, 업데이트 정보 자동 연동"
|
||||
body = """## 🚀 ShiftRing v1.1.3 릴리즈
|
||||
tag = "v1.1.5"
|
||||
title = "v1.1.5 - 근무 변경 모달 팝업 버튼 겹침 현상 완벽 수정 및 업데이트 정보 자동 기입 동기화"
|
||||
body = """## 🚀 ShiftRing v1.1.5 릴리즈
|
||||
|
||||
### 🌟 주요 변경 및 개선 사항
|
||||
1. **🎨 하루 메모 저장/삭제 아이콘 원형 컨테이너 스타일 적용 (`dialog_day_settings.xml`)**:
|
||||
- 설정 탭과 일관된 원형 컨테이너 스타일로 개편: 휴지통(레드 `#FF3B30`)과 저장 체크(블루 `#007AFF`) 아이콘을 시각적으로 구분하여 직관성 및 터치 편의성 극대화
|
||||
2. **📖 사용 설명서 전면 최신화 및 닫기 아이콘 수정 (`activity_manual.xml`, `ManualActivity.kt`, `MANUAL.md`)**:
|
||||
- 상단 닫기 버튼을 휴지통 아이콘에서 직관적인 닫기(X) 아이콘(`ic_close`)으로 전면 교체
|
||||
- 마크다운 잔여 기호(`**`)를 모두 정돈하고 고대비 컬러 키워드 강조 및 최신 One UI 8.5 기능 가이드로 최신화
|
||||
3. **🔄 공지사항(업데이트 정보) 최신화 및 실시간 자동 동기화 (`activity_notice.xml`, `NoticeActivity.kt`, `CHANGELOG.md`)**:
|
||||
- 닫기 아이콘을 `ic_close`로 교체하고, Gitea 최신 원격 릴리즈 및 로컬 체인지로그와 실시간 자동 연동"""
|
||||
1. **🔘 근무 변경 팝업 버튼 겹침 현상 완벽 수정 (`dialog_day_settings.xml`)**:
|
||||
- ConstraintLayout Flow 제약조건 충돌을 제거하고 3행 리니어 그리드 구조로 전면 재구축하여 '주간' 앞에 버튼들이 뭉치거나 겹치지 않고 완벽한 균등 정렬로 표시되도록 수정
|
||||
2. **🔄 업데이트 내역(CHANGELOG.md) 자동 기입 및 실시간 동기화 (`CHANGELOG.md`, `NoticeActivity.kt`)**:
|
||||
- v1.1.4 및 v1.1.5를 포함한 모든 최신 릴리즈 내역을 체인지로그에 누락 없이 동기화하고 최대 15개 항목까지 쾌적하게 열람 가능하도록 개선"""
|
||||
|
||||
apk_path = "app/build/outputs/apk/release/app-release.apk"
|
||||
if not os.path.exists(apk_path):
|
||||
@@ -55,10 +52,10 @@ print("Updated app.apk at project root.")
|
||||
|
||||
# Update version.json
|
||||
v_info = {
|
||||
"versionCode": 113,
|
||||
"versionName": "1.1.3",
|
||||
"versionCode": 115,
|
||||
"versionName": "1.1.5",
|
||||
"apkUrl": direct_url,
|
||||
"changelog": "v1.1.3: 하루 메모 아이콘 스타일 개선, 사용 설명서 최신화 및 닫기 버튼 수정, 업데이트 정보 자동 연동",
|
||||
"changelog": "v1.1.5: 근무 변경 팝업 버튼 겹침 수정, 업데이트 내역 자동 기입 및 실시간 동기화",
|
||||
"forceUpdate": False
|
||||
}
|
||||
with open("version.json", "w", encoding="utf-8") as f:
|
||||
@@ -70,7 +67,7 @@ print(f"Updated version.json with apkUrl: {direct_url}")
|
||||
git_path = r"C:\Users\work\AppData\Roaming\MobaXterm\slash\mx86_64b\bin"
|
||||
os.environ["PATH"] = git_path + os.pathsep + os.environ.get("PATH", "")
|
||||
|
||||
commit_msg = "v1.1.3 - 하루 메모 헤더 아이콘 컨테이너 스타일 적용, 사용 설명서 최신화 및 닫기 아이콘 교체, 업데이트 정보 자동 연동"
|
||||
commit_msg = "v1.1.5 - 근무 변경 모달 팝업 버튼 겹침 현상 완벽 수정 및 업데이트 정보 자동 기입 동기화"
|
||||
subprocess.run(["git", "add", "."], check=True)
|
||||
subprocess.run(["git", "commit", "-m", commit_msg], check=True)
|
||||
subprocess.run(["git", "push", "origin", "main"], check=True)
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"versionCode": 113,
|
||||
"versionName": "1.1.3",
|
||||
"apkUrl": "https://git.webpluss.net/attachments/c78389e6-0036-41e0-8ead-73f719539707",
|
||||
"changelog": "v1.1.3: 하루 메모 아이콘 스타일 개선, 사용 설명서 최신화 및 닫기 버튼 수정, 업데이트 정보 자동 연동",
|
||||
"versionCode": 115,
|
||||
"versionName": "1.1.5",
|
||||
"apkUrl": "https://git.webpluss.net/attachments/fa1514b1-2e73-4357-a593-c0b06cc4f3c0",
|
||||
"changelog": "v1.1.5: 근무 변경 팝업 버튼 겹침 수정, 업데이트 내역 자동 기입 및 실시간 동기화",
|
||||
"forceUpdate": false
|
||||
}
|
||||
Reference in New Issue
Block a user