Compare commits
8
Commits
e6230cdcfb
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
74116a681a | ||
|
|
740aad77b3 | ||
|
|
e4b3e50ba8 | ||
|
|
ff9e386b0e | ||
|
|
4de74a75e4 | ||
|
|
df873d6765 | ||
|
|
bebf76bc7e | ||
|
|
6ac67ec59d |
@@ -0,0 +1,7 @@
|
|||||||
|
*.jks
|
||||||
|
*.keystore
|
||||||
|
/build
|
||||||
|
/.gradle
|
||||||
|
/.idea
|
||||||
|
.DS_Store
|
||||||
|
/app/build
|
||||||
Generated
+36
@@ -27,6 +27,18 @@
|
|||||||
<option name="screenX" value="720" />
|
<option name="screenX" value="720" />
|
||||||
<option name="screenY" value="1280" />
|
<option name="screenY" value="1280" />
|
||||||
</PersistentDeviceSelectionData>
|
</PersistentDeviceSelectionData>
|
||||||
|
<PersistentDeviceSelectionData>
|
||||||
|
<option name="api" value="36" />
|
||||||
|
<option name="brand" value="qti" />
|
||||||
|
<option name="codename" value="Frogger" />
|
||||||
|
<option name="id" value="Frogger" />
|
||||||
|
<option name="labId" value="google" />
|
||||||
|
<option name="manufacturer" value="Nothing" />
|
||||||
|
<option name="name" value="Phone (4a)" />
|
||||||
|
<option name="screenDensity" value="480" />
|
||||||
|
<option name="screenX" value="1224" />
|
||||||
|
<option name="screenY" value="2720" />
|
||||||
|
</PersistentDeviceSelectionData>
|
||||||
<PersistentDeviceSelectionData>
|
<PersistentDeviceSelectionData>
|
||||||
<option name="api" value="33" />
|
<option name="api" value="33" />
|
||||||
<option name="brand" value="Infinix" />
|
<option name="brand" value="Infinix" />
|
||||||
@@ -1053,6 +1065,18 @@
|
|||||||
<option name="screenX" value="1440" />
|
<option name="screenX" value="1440" />
|
||||||
<option name="screenY" value="3088" />
|
<option name="screenY" value="3088" />
|
||||||
</PersistentDeviceSelectionData>
|
</PersistentDeviceSelectionData>
|
||||||
|
<PersistentDeviceSelectionData>
|
||||||
|
<option name="api" value="36" />
|
||||||
|
<option name="brand" value="samsung" />
|
||||||
|
<option name="codename" value="dm3qksx" />
|
||||||
|
<option name="id" value="dm3qksx" />
|
||||||
|
<option name="labId" value="google" />
|
||||||
|
<option name="manufacturer" value="Samsung" />
|
||||||
|
<option name="name" value="Galaxy S23 Ultra" />
|
||||||
|
<option name="screenDensity" value="450" />
|
||||||
|
<option name="screenX" value="1080" />
|
||||||
|
<option name="screenY" value="2316" />
|
||||||
|
</PersistentDeviceSelectionData>
|
||||||
<PersistentDeviceSelectionData>
|
<PersistentDeviceSelectionData>
|
||||||
<option name="api" value="34" />
|
<option name="api" value="34" />
|
||||||
<option name="brand" value="motorola" />
|
<option name="brand" value="motorola" />
|
||||||
@@ -1506,6 +1530,18 @@
|
|||||||
<option name="screenX" value="720" />
|
<option name="screenX" value="720" />
|
||||||
<option name="screenY" value="1600" />
|
<option name="screenY" value="1600" />
|
||||||
</PersistentDeviceSelectionData>
|
</PersistentDeviceSelectionData>
|
||||||
|
<PersistentDeviceSelectionData>
|
||||||
|
<option name="api" value="35" />
|
||||||
|
<option name="brand" value="Xiaomi" />
|
||||||
|
<option name="codename" value="houji" />
|
||||||
|
<option name="id" value="houji" />
|
||||||
|
<option name="labId" value="google" />
|
||||||
|
<option name="manufacturer" value="Xiaomi" />
|
||||||
|
<option name="name" value="14" />
|
||||||
|
<option name="screenDensity" value="480" />
|
||||||
|
<option name="screenX" value="1200" />
|
||||||
|
<option name="screenY" value="2670" />
|
||||||
|
</PersistentDeviceSelectionData>
|
||||||
<PersistentDeviceSelectionData>
|
<PersistentDeviceSelectionData>
|
||||||
<option name="api" value="34" />
|
<option name="api" value="34" />
|
||||||
<option name="brand" value="google" />
|
<option name="brand" value="google" />
|
||||||
|
|||||||
Generated
+7
@@ -1,10 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
<option name="testRunner" value="CHOOSE_PER_TEST" />
|
<option name="testRunner" value="CHOOSE_PER_TEST" />
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="modules">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
<option value="$PROJECT_DIR$/app" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
Generated
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 261 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 559 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,12 @@
|
|||||||
|
출처 링크 : https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13284296&menuNo=200026
|
||||||
|
|
||||||
|
<img id="wrtImg" src="https://gongu.copyright.or.kr/gongu/wrt/cmmn/wrtFileImageView.do?wrtSn=13284296&filePath=L2Rpc2sxL25ld2RhdGEvMjAyMC8yMS9DTFMxMDAwMi8xMzI4NDI5Nl9XUlRfMjFfQ0xTMTAwMDJfMjAyMDEyMThfMQ==&thumbAt=Y&thumbSe=b_tbumb&wrtTy=10002">
|
||||||
|
<p style="font-size: 0.9rem;font-style: italic;">
|
||||||
|
<span>
|
||||||
|
title : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13284296&menuNo=200026"> g선상아리아 가야금</a>
|
||||||
|
authr : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13284296&menuNo=200026"> 서예지</a>by
|
||||||
|
site : <a href="https://gongu.copyright.or.kr/gongu/main/main.do">공유마당 저작권 위원회</a></span> <br>
|
||||||
|
is licensed under
|
||||||
|
<img src="https://gongu.copyright.or.kr/static/gongu/img/common/img_license21.png" alt="CC BY[저작자 표시]" class="img_cc">
|
||||||
|
<span class="fc_orange">서예지 </span>의 "g선상아리아 가야금" 은 <span class="fc_orange">CC BY</span> 라이선스로 제공됩니다.
|
||||||
|
</p>
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+12
@@ -0,0 +1,12 @@
|
|||||||
|
출처 링크 : https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13372522&menuNo=200020
|
||||||
|
|
||||||
|
<img id="wrtImg" src="https://gongu.copyright.or.kr/gongu/wrt/cmmn/wrtFileImageView.do?wrtSn=13372522&filePath=L2Rpc2sxL25ld2RhdGEvMjAyNC8wNy9DTFMxMDAwMi9jNWNlM2YxYWY4ZjE3ZDExMzkxYjE5OWYzYjRjMTZhMGQ0ZDcwZmVkZDZiMGZhYWU0ZjMyMGU2YzE4MjJiZjMz&thumbAt=Y&thumbSe=b_tbumb&wrtTy=10002">
|
||||||
|
<p style="font-size: 0.9rem;font-style: italic;">
|
||||||
|
<span>
|
||||||
|
title : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13372522&menuNo=200020"> 산_치악산_영원사 입구_오후_공간음_계류와 소요산매미</a>
|
||||||
|
authr : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13372522&menuNo=200020"> JICA</a>by
|
||||||
|
site : <a href="https://gongu.copyright.or.kr/gongu/main/main.do">공유마당 저작권 위원회</a></span> <br>
|
||||||
|
is licensed under
|
||||||
|
<img src="https://gongu.copyright.or.kr/static/gongu/img/common/img_license01.png" alt="KOGL 출처표시, 상업적, 비상업적 이용가능, 변형 등 2차적 저작물 작성 가능" class="img_cc">
|
||||||
|
|
||||||
|
</p>
|
||||||
Binary file not shown.
@@ -0,0 +1,12 @@
|
|||||||
|
출처 링크 : https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13284297&menuNo=200026
|
||||||
|
|
||||||
|
<img id="wrtImg" src="https://gongu.copyright.or.kr/gongu/wrt/cmmn/wrtFileImageView.do?wrtSn=13284297&filePath=L2Rpc2sxL25ld2RhdGEvMjAyMC8yMS9DTFMxMDAwMi8xMzI4NDI5N19XUlRfMjFfQ0xTMTAwMDJfMjAyMDEyMThfMQ==&thumbAt=Y&thumbSe=b_tbumb&wrtTy=10002">
|
||||||
|
<p style="font-size: 0.9rem;font-style: italic;">
|
||||||
|
<span>
|
||||||
|
title : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13284297&menuNo=200026"> 세레나데 가야금</a>
|
||||||
|
authr : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13284297&menuNo=200026"> 서예지</a>by
|
||||||
|
site : <a href="https://gongu.copyright.or.kr/gongu/main/main.do">공유마당 저작권 위원회</a></span> <br>
|
||||||
|
is licensed under
|
||||||
|
<img src="https://gongu.copyright.or.kr/static/gongu/img/common/img_license21.png" alt="CC BY[저작자 표시]" class="img_cc">
|
||||||
|
<span class="fc_orange">서예지 </span>의 "세레나데 가야금" 은 <span class="fc_orange">CC BY</span> 라이선스로 제공됩니다.
|
||||||
|
</p>
|
||||||
Binary file not shown.
@@ -0,0 +1,12 @@
|
|||||||
|
출처 링크 : https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13287481&menuNo=200020
|
||||||
|
|
||||||
|
<img id="wrtImg" src="https://gongu.copyright.or.kr/gongu/wrt/cmmn/wrtFileImageView.do?wrtSn=13287481&filePath=L2Rpc2sxL25ld2RhdGEvMjAyMS8wMS9DTFMxMDAwMi8xMzI4NzQ4MV9XUlRfMDFfQ0xTMTAwMDJfMjAyMTA5MDNfMQ==&thumbAt=Y&thumbSe=b_tbumb&wrtTy=10002">
|
||||||
|
<p style="font-size: 0.9rem;font-style: italic;">
|
||||||
|
<span>
|
||||||
|
title : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13287481&menuNo=200020"> 전통악기_꽹과리_치다_연주_MKH418_ST_192</a>
|
||||||
|
authr : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13287481&menuNo=200020"> (재)전주정보문화산업진흥원</a>by
|
||||||
|
site : <a href="https://gongu.copyright.or.kr/gongu/main/main.do">공유마당 저작권 위원회</a></span> <br>
|
||||||
|
is licensed under
|
||||||
|
<img src="https://gongu.copyright.or.kr/static/gongu/img/common/img_license01.png" alt="KOGL 출처표시, 상업적, 비상업적 이용가능, 변형 등 2차적 저작물 작성 가능" class="img_cc">
|
||||||
|
|
||||||
|
</p>
|
||||||
BIN
Binary file not shown.
+12
@@ -0,0 +1,12 @@
|
|||||||
|
출처 링크 : https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13287485&menuNo=200020
|
||||||
|
|
||||||
|
<img id="wrtImg" src="https://gongu.copyright.or.kr/gongu/wrt/cmmn/wrtFileImageView.do?wrtSn=13287485&filePath=L2Rpc2sxL25ld2RhdGEvMjAyMS8wMS9DTFMxMDAwMi8xMzI4NzQ4NV9XUlRfMDFfQ0xTMTAwMDJfMjAyMTA5MDNfMQ==&thumbAt=Y&thumbSe=b_tbumb&wrtTy=10002">
|
||||||
|
<p style="font-size: 0.9rem;font-style: italic;">
|
||||||
|
<span>
|
||||||
|
title : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13287485&menuNo=200020"> 전통악기_장구_치다_보통속도_Ver.1_MKH418_ST_192</a>
|
||||||
|
authr : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13287485&menuNo=200020"> (재)전주정보문화산업진흥원</a>by
|
||||||
|
site : <a href="https://gongu.copyright.or.kr/gongu/main/main.do">공유마당 저작권 위원회</a></span> <br>
|
||||||
|
is licensed under
|
||||||
|
<img src="https://gongu.copyright.or.kr/static/gongu/img/common/img_license01.png" alt="KOGL 출처표시, 상업적, 비상업적 이용가능, 변형 등 2차적 저작물 작성 가능" class="img_cc">
|
||||||
|
|
||||||
|
</p>
|
||||||
Binary file not shown.
@@ -0,0 +1,12 @@
|
|||||||
|
출처 링크 : https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13287487&menuNo=200020
|
||||||
|
|
||||||
|
<img id="wrtImg" src="https://gongu.copyright.or.kr/gongu/wrt/cmmn/wrtFileImageView.do?wrtSn=13287487&filePath=L2Rpc2sxL25ld2RhdGEvMjAyMS8wMS9DTFMxMDAwMi8xMzI4NzQ4N19XUlRfMDFfQ0xTMTAwMDJfMjAyMTA5MDNfMQ==&thumbAt=Y&thumbSe=b_tbumb&wrtTy=10002">
|
||||||
|
<p style="font-size: 0.9rem;font-style: italic;">
|
||||||
|
<span>
|
||||||
|
title : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13287487&menuNo=200020"> 전통악기_징_열기_긴_MKH418_ST_192</a>
|
||||||
|
authr : <a href="https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=13287487&menuNo=200020"> (재)전주정보문화산업진흥원</a>by
|
||||||
|
site : <a href="https://gongu.copyright.or.kr/gongu/main/main.do">공유마당 저작권 위원회</a></span> <br>
|
||||||
|
is licensed under
|
||||||
|
<img src="https://gongu.copyright.or.kr/static/gongu/img/common/img_license01.png" alt="KOGL 출처표시, 상업적, 비상업적 이용가능, 변형 등 2차적 저작물 작성 가능" class="img_cc">
|
||||||
|
|
||||||
|
</p>
|
||||||
+108
@@ -0,0 +1,108 @@
|
|||||||
|
# 한글 십자말풀이 스테이지 생성 규칙 및 가이드라인 (Stage Rules & Guidelines)
|
||||||
|
|
||||||
|
본 문서는 **한글 십자말풀이 앱(WordPuzzle)**의 스테이지를 지속적으로 확장(50개, 100개 이상)하기 위한 난이도 설계, 그리드 무결성 룰, 단어 배치 가이드라인 및 JSON 데이터 스키마를 정의합니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 스테이지 단계별 구조 및 난이도 진도 설계 (Difficulty Progression Strategy)
|
||||||
|
|
||||||
|
초반 스테이지의 진입 장벽을 낮추고 플레이어가 자연스럽게 어휘력을 확장할 수 있도록 완만한 난이도 상승 곡선(Progressive Difficulty Curve)과 풍성한 단어 밀도를 적용합니다.
|
||||||
|
|
||||||
|
| 스테이지 구간 | 난이도 (`difficulty`) | 그리드 크기 (`gridSize`) | 배치 단어 수 (`clues.size`) | 주요 단어 구성 및 어휘 특징 |
|
||||||
|
| :--- | :---: | :---: | :---: | :--- |
|
||||||
|
| **01 ~ 10** | Level 1 (입문/초보) | 6x6 ~ 7x7 | **6 ~ 8개** | **100% 기초 일상 어휘** (학교, 과일, 가족, 동물, 수영, 구름 등 초등 기초 어휘만 사용, 공간이 비지 않도록 알차게 배치) |
|
||||||
|
| **11 ~ 20** | Level 1 (초급) | 7x7 | **7 ~ 9개** | 쉬운 일상 단어 + 실생활 고빈도 최고 쉬운 사자성어 1개 (일석이조, 작심삼일, 남녀노소 등) |
|
||||||
|
| **21 ~ 40** | Level 2 (중급) | 7x7 ~ 8x8 | **8 ~ 10개** | 일반 어휘 + 한국어 교육용 고빈도 사자성어 (127개 핵심 사자성어) + 글로벌 기업 |
|
||||||
|
| **41 ~ 70** | Level 2~3 (상급) | 8x8 | **9 ~ 11개** | 시사상식, 글로벌 기업 브랜드, 인문학, 고사성어 |
|
||||||
|
| **71 ~ 100+** | Level 3 (마스터) | 8x8 | **10 ~ 12개** | 고난도 고사성어, 문화/역사/과학 종합 어휘 마스터 |
|
||||||
|
|
||||||
|
* **참고 자료**: '한국어 교육용 사자성어 선정 및 사용 양상 분석(진달래, 2020)' 논문의 127개 고빈도 사자성어 목록을 기반으로 사자성어의 난이도를 단계별로 배치했습니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 십자말풀이 그리드 및 단어 배치 룰 (Grid Layout & Placement Rules)
|
||||||
|
|
||||||
|
모든 스테이지의 `clues` 단어 배치는 다음 수학적/구조적 조건을 반드시 만족해야 합니다.
|
||||||
|
|
||||||
|
### ① 좌표계 및 이동 규칙
|
||||||
|
* **좌표 기준**: 그리드의 좌측 상단이 `(row: 0, col: 0)`입니다.
|
||||||
|
* **가로 방향 (`ACROSS`)**: `(startRow, startCol)`에서 시작하여 오른쪽으로 `length`만큼 이동합니다.
|
||||||
|
$$\text{범위}: \text{startCol} + \text{length} \le \text{gridSize}$$
|
||||||
|
* **세로 방향 (`DOWN`)**: `(startRow, startCol)`에서 시작하여 아래쪽으로 `length`만큼 이동합니다.
|
||||||
|
$$\text{범위}: \text{startRow} + \text{length} \le \text{gridSize}$$
|
||||||
|
|
||||||
|
### ② 단어 및 글자 배치 규칙
|
||||||
|
* **최소 단어 길이**: 가로나 세로로 나열되는 단어는 최소 2글자 이상이어야 합니다. 1글자짜리 단어는 인정되지 않습니다 (`length >= 2`).
|
||||||
|
* **공통 글자 공유**: 가로 단어와 세로 단어가 만나는 교차점의 글자는 두 단어 모두에 완벽하게 일치해야 합니다.
|
||||||
|
* **띄어쓰기 생략**: 두 단어 이상으로 이루어진 복합어나 구절을 답으로 쓸 때는 띄어쓰기 없이 칸을 이어 붙여서 작성합니다.
|
||||||
|
|
||||||
|
### ③ 교차점 (Intersection) 및 연결성 (Connectivity)
|
||||||
|
* **단어 간 교차 필수**: 퍼즐 내의 모든 단어는 최소 1개 이상의 다른 단어와 교차점(같은 한글 문자를 공유하는 좌표)을 형성해야 합니다.
|
||||||
|
* **서브 퍼즐 허용**: 단어 수가 많고 그리드 공간이 넓을 경우 2개 이상의 유기적 서브 퍼즐로 나누어 구성할 수 있으며, 각 서브 퍼즐은 최소 2개 이상의 단어가 교차해야 합니다. (단독 1개짜리 외딴 단어 배치 금지)
|
||||||
|
|
||||||
|
### ④ 인접 글자의 무의미한 단어 조합 방지 규칙
|
||||||
|
* **의미 없는 유령 단어 조합 지양**: 단어들이 나란히 배치될 때 교차점이 아닌 인접 칸에 글자들이 나란히 놓여, 가로나 세로 방향으로 읽었을 때 의미가 성립되지 않는 불필요한 글자 조합(예: "름기차")이 생기는 배치는 완벽히 차단해야 합니다.
|
||||||
|
* **방향성 유효성**: 가로나 세로 어떤 방향으로 읽더라도 올바른 정답 단어로만 읽히도록 단어 사이의 공간(검은 칸/빈 공간)을 확보하여 배치합니다.
|
||||||
|
* **색상 및 시각적 구분**: 게임 화면 내에서 단어별 고유 파스텔 배경 색상 및 테두리로 각 단어의 구획을 확실하게 표시하여 사용자가 혼동하지 않도록 처리합니다.
|
||||||
|
|
||||||
|
### ⑤ 퍼즐 독립 구성 및 단독 단어 배치 지양
|
||||||
|
* **자연스러운 연결성 우선**: 한 스테이지에 1개 이상의 독립된 퍼즐이 구성될 수는 있으나, 이는 필수 조건이 아닙니다.
|
||||||
|
* **억지 단독 배치 지양**: 연결 고리가 없이 1개의 단어만 따로 떨구어 단독 배치하는 방식으로 억지로 퍼즐 개수를 늘리지 않으며, 교차점을 통해 서로 유기적으로 연결된 완성도 높은 퍼즐 구성을 최우선으로 합니다.
|
||||||
|
|
||||||
|
### ⑥ 시작 힌트 문자 50% 이하 제한 규칙
|
||||||
|
* **단어별 힌트 비율 제한**: 스테이지 시작 시 (또는 문자 새로고침 시) 무작위로 배치되는 시작 힌트 문자는, 어떤 단어이든 그 단어를 구성하는 전체 문자 수(`clue.length`)의 **50% 이하($\le \lfloor \text{length} \times 0.5 \rfloor$)까지만 채워지도록 제한**합니다.
|
||||||
|
* **과도한 자동 정답 방지**: 2~3글자 단어의 경우 최대 1글자까지만 시작 힌트로 허용하여, 시작하자마자 특정 단어가 통째로 채워지거나 거의 다 풀어져버려 게임의 재미가 반감되는 현상을 근본적으로 차단합니다.
|
||||||
|
|
||||||
|
### ⑦ 2글자 이상 부분 문자열 중복 단어 포개짐 금지 규칙
|
||||||
|
* **2글자 이상 중복 포개짐 금지**: 한 스테이지 안에서 임의의 두 단어가 2글자 이상 동일한 연속 문자열을 공유하는 경우(예: "사랑"과 "사랑방", "기차"와 "기차표", "변호"와 "변호사", "리본"과 "리본끈" 등), 두 단어를 한 스테이지에 동시에 배치하거나 가로/세로 상에 포개어 만드는 구성을 엄격히 금지합니다.
|
||||||
|
* **단일 교차점 원칙**: 서로 다른 단어 간의 교차점(Intersection)은 오직 **1글자 단일 교차**로만 형성되어야 합니다.
|
||||||
|
|
||||||
|
### ⑧ 힌트 보유 제한(최대 5개) 및 일일 무료 시청 제한(3회)
|
||||||
|
* **최대 보유 제한**: 보유할 수 있는 힌트 개수는 **최대 5개**로 제한됩니다. 보유 힌트가 5개일 경우 광고 시청 버튼이 비활성화되며 추가 힌트 충전이 불가능합니다.
|
||||||
|
* **일일 무료 시청 제한**: 힌트를 충전하기 위한 일일 무료 광고 시청 한도는 **3회**로 지정됩니다. (매일 자정에 초기화)
|
||||||
|
|
||||||
|
### ⑨ 그리드 내 퍼즐 가로/세로 정중앙 배치 규칙
|
||||||
|
* **중앙 밸런스 배치**: 퍼즐 단어 배치가 그리드의 우측, 좌측, 상단, 하단 등 한쪽 귀퉁이나 구석으로 쏠리는 현상을 완벽히 차단합니다.
|
||||||
|
* **자동 오프셋 정렬**: 퍼즐 전체 단어들이 차지하는 바운딩 박스(Bounding Box: `min_r, max_r, min_c, max_c`)를 계산한 후, 그리드의 가로/세로 정중앙 중심점과 일치하도록 이동 오프셋($\Delta r, \Delta c$)을 자동 적용하여 시각적 균형감을 극대화합니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. JSON 스키마 명세 (`stages.json`)
|
||||||
|
|
||||||
|
스테이지 데이터는 `app/src/main/assets/data/stages.json`에 저장되며, 다음 스키마를 엄격히 준수합니다.
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"stageNumber": 1,
|
||||||
|
"title": "첫걸음: 풍성한 쉬운 단어 I",
|
||||||
|
"gridSize": 6,
|
||||||
|
"difficulty": 1,
|
||||||
|
"clues": [
|
||||||
|
{
|
||||||
|
"id": "c1_1",
|
||||||
|
"number": 1,
|
||||||
|
"direction": "ACROSS",
|
||||||
|
"word": "생일파티",
|
||||||
|
"clue": "태어난 날을 축하하기 위해 여는 잔치.",
|
||||||
|
"startRow": 2,
|
||||||
|
"startCol": 1,
|
||||||
|
"length": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 주제 및 단어 데이터 연동 가이드라인 (Theme & Vocabulary)
|
||||||
|
|
||||||
|
1. **[words.json](file:///home/gerd/Workspace/AndroidStudioProjects/wordpuzzles/app/src/main/assets/data/words.json) 연동**:
|
||||||
|
* 퍼즐 단어장에 소속된 단어 카테고리(`"스테이지 단어"`, `"고사성어"`, `"글로벌 기업"`, `"일반"`)를 적극 활용합니다.
|
||||||
|
2. **다양한 주제 테마 배치**:
|
||||||
|
* **초반 (01~10)**: 학교, 음식, 가족, 동물, 자연 등 100% 기초 일상어 (단어 6~8개 풍성하게 배치)
|
||||||
|
* **중반 (11~40)**: 일상어 + 실생활 고빈도 필수 사자성어 + 글로벌 기업 브랜드
|
||||||
|
* **후반 (41~100)**: 시사상식, 고사성어, 글로벌 기업, 역사/문화 종합 탐구
|
||||||
|
3. **단어 설명(`clue`)의 명확성**:
|
||||||
|
* 힌트 문장은 자극적이지 않으며 직관적이고 표준 국어대사전에 기반한 깔끔한 설명을 사용합니다.
|
||||||
+14
-4
@@ -7,20 +7,30 @@ plugins {
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "com.wordpuzzle.hangul"
|
namespace = "com.wordpuzzle.hangul"
|
||||||
compileSdk = 35
|
compileSdk = 36
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "com.wordpuzzle.hangul"
|
applicationId = "com.wordpuzzle.hangul"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 35
|
targetSdk = 36
|
||||||
versionCode = 1
|
versionCode = 4
|
||||||
versionName = "1.0.0"
|
versionName = "1.1.2"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
signingConfigs {
|
||||||
|
create("release") {
|
||||||
|
storeFile = file("${rootDir}/wordpuzzle-release-key.jks")
|
||||||
|
storePassword = "wordpuzzle1234!"
|
||||||
|
keyAlias = "wordpuzzle_key_alias"
|
||||||
|
keyPassword = "wordpuzzle1234!"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
|
signingConfig = signingConfigs.getByName("release")
|
||||||
isMinifyEnabled = false
|
isMinifyEnabled = false
|
||||||
proguardFiles(
|
proguardFiles(
|
||||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||||
|
|||||||
+4
-6
@@ -32,12 +32,12 @@ public class AppDatabase_Impl : AppDatabase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override fun createOpenDelegate(): RoomOpenDelegate {
|
protected override fun createOpenDelegate(): RoomOpenDelegate {
|
||||||
val _openDelegate: RoomOpenDelegate = object : RoomOpenDelegate(1,
|
val _openDelegate: RoomOpenDelegate = object : RoomOpenDelegate(2,
|
||||||
"6ed8a7a3657c3041f42f4f00efa0280d", "99a3f99ee3147476a93cae61ad1484dd") {
|
"09a5f2a590401566745e94684a7b9ee9", "e79b22363af5501fb8252181419ce097") {
|
||||||
public override fun createAllTables(connection: SQLiteConnection) {
|
public override fun createAllTables(connection: SQLiteConnection) {
|
||||||
connection.execSQL("CREATE TABLE IF NOT EXISTS `words` (`id` TEXT NOT NULL, `word` TEXT NOT NULL, `meaning` TEXT NOT NULL, `category` TEXT NOT NULL, `difficulty` INTEGER NOT NULL, `example` TEXT NOT NULL, `isLearned` INTEGER NOT NULL, `isPreLearned` INTEGER NOT NULL, `learnedTimestamp` INTEGER NOT NULL, PRIMARY KEY(`id`))")
|
connection.execSQL("CREATE TABLE IF NOT EXISTS `words` (`id` TEXT NOT NULL, `word` TEXT NOT NULL, `meaning` TEXT NOT NULL, `category` TEXT NOT NULL, `difficulty` INTEGER NOT NULL, `isLearned` INTEGER NOT NULL, `isPreLearned` INTEGER NOT NULL, `learnedTimestamp` INTEGER NOT NULL, PRIMARY KEY(`id`))")
|
||||||
connection.execSQL("CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)")
|
connection.execSQL("CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)")
|
||||||
connection.execSQL("INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '6ed8a7a3657c3041f42f4f00efa0280d')")
|
connection.execSQL("INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '09a5f2a590401566745e94684a7b9ee9')")
|
||||||
}
|
}
|
||||||
|
|
||||||
public override fun dropAllTables(connection: SQLiteConnection) {
|
public override fun dropAllTables(connection: SQLiteConnection) {
|
||||||
@@ -71,8 +71,6 @@ public class AppDatabase_Impl : AppDatabase() {
|
|||||||
TableInfo.CREATED_FROM_ENTITY))
|
TableInfo.CREATED_FROM_ENTITY))
|
||||||
_columnsWords.put("difficulty", TableInfo.Column("difficulty", "INTEGER", true, 0, null,
|
_columnsWords.put("difficulty", TableInfo.Column("difficulty", "INTEGER", true, 0, null,
|
||||||
TableInfo.CREATED_FROM_ENTITY))
|
TableInfo.CREATED_FROM_ENTITY))
|
||||||
_columnsWords.put("example", TableInfo.Column("example", "TEXT", true, 0, null,
|
|
||||||
TableInfo.CREATED_FROM_ENTITY))
|
|
||||||
_columnsWords.put("isLearned", TableInfo.Column("isLearned", "INTEGER", true, 0, null,
|
_columnsWords.put("isLearned", TableInfo.Column("isLearned", "INTEGER", true, 0, null,
|
||||||
TableInfo.CREATED_FROM_ENTITY))
|
TableInfo.CREATED_FROM_ENTITY))
|
||||||
_columnsWords.put("isPreLearned", TableInfo.Column("isPreLearned", "INTEGER", true, 0, null,
|
_columnsWords.put("isPreLearned", TableInfo.Column("isPreLearned", "INTEGER", true, 0, null,
|
||||||
|
|||||||
+60
-27
@@ -34,7 +34,7 @@ public class WordDao_Impl(
|
|||||||
this.__db = __db
|
this.__db = __db
|
||||||
this.__insertAdapterOfWordEntity = object : EntityInsertAdapter<WordEntity>() {
|
this.__insertAdapterOfWordEntity = object : EntityInsertAdapter<WordEntity>() {
|
||||||
protected override fun createQuery(): String =
|
protected override fun createQuery(): String =
|
||||||
"INSERT OR IGNORE INTO `words` (`id`,`word`,`meaning`,`category`,`difficulty`,`example`,`isLearned`,`isPreLearned`,`learnedTimestamp`) VALUES (?,?,?,?,?,?,?,?,?)"
|
"INSERT OR IGNORE INTO `words` (`id`,`word`,`meaning`,`category`,`difficulty`,`isLearned`,`isPreLearned`,`learnedTimestamp`) VALUES (?,?,?,?,?,?,?,?)"
|
||||||
|
|
||||||
protected override fun bind(statement: SQLiteStatement, entity: WordEntity) {
|
protected override fun bind(statement: SQLiteStatement, entity: WordEntity) {
|
||||||
statement.bindText(1, entity.id)
|
statement.bindText(1, entity.id)
|
||||||
@@ -42,17 +42,16 @@ public class WordDao_Impl(
|
|||||||
statement.bindText(3, entity.meaning)
|
statement.bindText(3, entity.meaning)
|
||||||
statement.bindText(4, entity.category)
|
statement.bindText(4, entity.category)
|
||||||
statement.bindLong(5, entity.difficulty.toLong())
|
statement.bindLong(5, entity.difficulty.toLong())
|
||||||
statement.bindText(6, entity.example)
|
|
||||||
val _tmp: Int = if (entity.isLearned) 1 else 0
|
val _tmp: Int = if (entity.isLearned) 1 else 0
|
||||||
statement.bindLong(7, _tmp.toLong())
|
statement.bindLong(6, _tmp.toLong())
|
||||||
val _tmp_1: Int = if (entity.isPreLearned) 1 else 0
|
val _tmp_1: Int = if (entity.isPreLearned) 1 else 0
|
||||||
statement.bindLong(8, _tmp_1.toLong())
|
statement.bindLong(7, _tmp_1.toLong())
|
||||||
statement.bindLong(9, entity.learnedTimestamp)
|
statement.bindLong(8, entity.learnedTimestamp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.__updateAdapterOfWordEntity = object : EntityDeleteOrUpdateAdapter<WordEntity>() {
|
this.__updateAdapterOfWordEntity = object : EntityDeleteOrUpdateAdapter<WordEntity>() {
|
||||||
protected override fun createQuery(): String =
|
protected override fun createQuery(): String =
|
||||||
"UPDATE OR ABORT `words` SET `id` = ?,`word` = ?,`meaning` = ?,`category` = ?,`difficulty` = ?,`example` = ?,`isLearned` = ?,`isPreLearned` = ?,`learnedTimestamp` = ? WHERE `id` = ?"
|
"UPDATE OR ABORT `words` SET `id` = ?,`word` = ?,`meaning` = ?,`category` = ?,`difficulty` = ?,`isLearned` = ?,`isPreLearned` = ?,`learnedTimestamp` = ? WHERE `id` = ?"
|
||||||
|
|
||||||
protected override fun bind(statement: SQLiteStatement, entity: WordEntity) {
|
protected override fun bind(statement: SQLiteStatement, entity: WordEntity) {
|
||||||
statement.bindText(1, entity.id)
|
statement.bindText(1, entity.id)
|
||||||
@@ -60,13 +59,12 @@ public class WordDao_Impl(
|
|||||||
statement.bindText(3, entity.meaning)
|
statement.bindText(3, entity.meaning)
|
||||||
statement.bindText(4, entity.category)
|
statement.bindText(4, entity.category)
|
||||||
statement.bindLong(5, entity.difficulty.toLong())
|
statement.bindLong(5, entity.difficulty.toLong())
|
||||||
statement.bindText(6, entity.example)
|
|
||||||
val _tmp: Int = if (entity.isLearned) 1 else 0
|
val _tmp: Int = if (entity.isLearned) 1 else 0
|
||||||
statement.bindLong(7, _tmp.toLong())
|
statement.bindLong(6, _tmp.toLong())
|
||||||
val _tmp_1: Int = if (entity.isPreLearned) 1 else 0
|
val _tmp_1: Int = if (entity.isPreLearned) 1 else 0
|
||||||
statement.bindLong(8, _tmp_1.toLong())
|
statement.bindLong(7, _tmp_1.toLong())
|
||||||
statement.bindLong(9, entity.learnedTimestamp)
|
statement.bindLong(8, entity.learnedTimestamp)
|
||||||
statement.bindText(10, entity.id)
|
statement.bindText(9, entity.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -91,7 +89,6 @@ public class WordDao_Impl(
|
|||||||
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
||||||
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
||||||
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
||||||
val _columnIndexOfExample: Int = getColumnIndexOrThrow(_stmt, "example")
|
|
||||||
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
||||||
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
||||||
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
||||||
@@ -108,8 +105,6 @@ public class WordDao_Impl(
|
|||||||
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
||||||
val _tmpDifficulty: Int
|
val _tmpDifficulty: Int
|
||||||
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
||||||
val _tmpExample: String
|
|
||||||
_tmpExample = _stmt.getText(_columnIndexOfExample)
|
|
||||||
val _tmpIsLearned: Boolean
|
val _tmpIsLearned: Boolean
|
||||||
val _tmp: Int
|
val _tmp: Int
|
||||||
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
||||||
@@ -121,7 +116,7 @@ public class WordDao_Impl(
|
|||||||
val _tmpLearnedTimestamp: Long
|
val _tmpLearnedTimestamp: Long
|
||||||
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
||||||
_item =
|
_item =
|
||||||
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpExample,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
||||||
_result.add(_item)
|
_result.add(_item)
|
||||||
}
|
}
|
||||||
_result
|
_result
|
||||||
@@ -143,7 +138,6 @@ public class WordDao_Impl(
|
|||||||
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
||||||
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
||||||
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
||||||
val _columnIndexOfExample: Int = getColumnIndexOrThrow(_stmt, "example")
|
|
||||||
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
||||||
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
||||||
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
||||||
@@ -159,8 +153,6 @@ public class WordDao_Impl(
|
|||||||
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
||||||
val _tmpDifficulty: Int
|
val _tmpDifficulty: Int
|
||||||
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
||||||
val _tmpExample: String
|
|
||||||
_tmpExample = _stmt.getText(_columnIndexOfExample)
|
|
||||||
val _tmpIsLearned: Boolean
|
val _tmpIsLearned: Boolean
|
||||||
val _tmp: Int
|
val _tmp: Int
|
||||||
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
||||||
@@ -172,7 +164,7 @@ public class WordDao_Impl(
|
|||||||
val _tmpLearnedTimestamp: Long
|
val _tmpLearnedTimestamp: Long
|
||||||
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
||||||
_result =
|
_result =
|
||||||
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpExample,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
||||||
} else {
|
} else {
|
||||||
_result = null
|
_result = null
|
||||||
}
|
}
|
||||||
@@ -193,7 +185,6 @@ public class WordDao_Impl(
|
|||||||
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
||||||
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
||||||
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
||||||
val _columnIndexOfExample: Int = getColumnIndexOrThrow(_stmt, "example")
|
|
||||||
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
||||||
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
||||||
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
||||||
@@ -210,8 +201,6 @@ public class WordDao_Impl(
|
|||||||
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
||||||
val _tmpDifficulty: Int
|
val _tmpDifficulty: Int
|
||||||
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
||||||
val _tmpExample: String
|
|
||||||
_tmpExample = _stmt.getText(_columnIndexOfExample)
|
|
||||||
val _tmpIsLearned: Boolean
|
val _tmpIsLearned: Boolean
|
||||||
val _tmp: Int
|
val _tmp: Int
|
||||||
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
||||||
@@ -223,7 +212,7 @@ public class WordDao_Impl(
|
|||||||
val _tmpLearnedTimestamp: Long
|
val _tmpLearnedTimestamp: Long
|
||||||
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
||||||
_item =
|
_item =
|
||||||
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpExample,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
||||||
_result.add(_item)
|
_result.add(_item)
|
||||||
}
|
}
|
||||||
_result
|
_result
|
||||||
@@ -245,7 +234,6 @@ public class WordDao_Impl(
|
|||||||
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
||||||
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
||||||
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
||||||
val _columnIndexOfExample: Int = getColumnIndexOrThrow(_stmt, "example")
|
|
||||||
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
||||||
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
||||||
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
||||||
@@ -262,8 +250,6 @@ public class WordDao_Impl(
|
|||||||
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
||||||
val _tmpDifficulty: Int
|
val _tmpDifficulty: Int
|
||||||
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
||||||
val _tmpExample: String
|
|
||||||
_tmpExample = _stmt.getText(_columnIndexOfExample)
|
|
||||||
val _tmpIsLearned: Boolean
|
val _tmpIsLearned: Boolean
|
||||||
val _tmp: Int
|
val _tmp: Int
|
||||||
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
||||||
@@ -275,7 +261,7 @@ public class WordDao_Impl(
|
|||||||
val _tmpLearnedTimestamp: Long
|
val _tmpLearnedTimestamp: Long
|
||||||
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
||||||
_item =
|
_item =
|
||||||
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpExample,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
||||||
_result.add(_item)
|
_result.add(_item)
|
||||||
}
|
}
|
||||||
_result
|
_result
|
||||||
@@ -285,6 +271,53 @@ public class WordDao_Impl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override suspend fun getRandomWord(): WordEntity? {
|
||||||
|
val _sql: String = "SELECT * FROM words ORDER BY RANDOM() LIMIT 1"
|
||||||
|
return performSuspending(__db, true, false) { _connection ->
|
||||||
|
val _stmt: SQLiteStatement = _connection.prepare(_sql)
|
||||||
|
try {
|
||||||
|
val _columnIndexOfId: Int = getColumnIndexOrThrow(_stmt, "id")
|
||||||
|
val _columnIndexOfWord: Int = getColumnIndexOrThrow(_stmt, "word")
|
||||||
|
val _columnIndexOfMeaning: Int = getColumnIndexOrThrow(_stmt, "meaning")
|
||||||
|
val _columnIndexOfCategory: Int = getColumnIndexOrThrow(_stmt, "category")
|
||||||
|
val _columnIndexOfDifficulty: Int = getColumnIndexOrThrow(_stmt, "difficulty")
|
||||||
|
val _columnIndexOfIsLearned: Int = getColumnIndexOrThrow(_stmt, "isLearned")
|
||||||
|
val _columnIndexOfIsPreLearned: Int = getColumnIndexOrThrow(_stmt, "isPreLearned")
|
||||||
|
val _columnIndexOfLearnedTimestamp: Int = getColumnIndexOrThrow(_stmt, "learnedTimestamp")
|
||||||
|
val _result: WordEntity?
|
||||||
|
if (_stmt.step()) {
|
||||||
|
val _tmpId: String
|
||||||
|
_tmpId = _stmt.getText(_columnIndexOfId)
|
||||||
|
val _tmpWord: String
|
||||||
|
_tmpWord = _stmt.getText(_columnIndexOfWord)
|
||||||
|
val _tmpMeaning: String
|
||||||
|
_tmpMeaning = _stmt.getText(_columnIndexOfMeaning)
|
||||||
|
val _tmpCategory: String
|
||||||
|
_tmpCategory = _stmt.getText(_columnIndexOfCategory)
|
||||||
|
val _tmpDifficulty: Int
|
||||||
|
_tmpDifficulty = _stmt.getLong(_columnIndexOfDifficulty).toInt()
|
||||||
|
val _tmpIsLearned: Boolean
|
||||||
|
val _tmp: Int
|
||||||
|
_tmp = _stmt.getLong(_columnIndexOfIsLearned).toInt()
|
||||||
|
_tmpIsLearned = _tmp != 0
|
||||||
|
val _tmpIsPreLearned: Boolean
|
||||||
|
val _tmp_1: Int
|
||||||
|
_tmp_1 = _stmt.getLong(_columnIndexOfIsPreLearned).toInt()
|
||||||
|
_tmpIsPreLearned = _tmp_1 != 0
|
||||||
|
val _tmpLearnedTimestamp: Long
|
||||||
|
_tmpLearnedTimestamp = _stmt.getLong(_columnIndexOfLearnedTimestamp)
|
||||||
|
_result =
|
||||||
|
WordEntity(_tmpId,_tmpWord,_tmpMeaning,_tmpCategory,_tmpDifficulty,_tmpIsLearned,_tmpIsPreLearned,_tmpLearnedTimestamp)
|
||||||
|
} else {
|
||||||
|
_result = null
|
||||||
|
}
|
||||||
|
_result
|
||||||
|
} finally {
|
||||||
|
_stmt.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override suspend fun markWordLearned(wordText: String, timestamp: Long) {
|
public override suspend fun markWordLearned(wordText: String, timestamp: Long) {
|
||||||
val _sql: String = "UPDATE words SET isLearned = 1, learnedTimestamp = ? WHERE word = ?"
|
val _sql: String = "UPDATE words SET isLearned = 1, learnedTimestamp = ? WHERE word = ?"
|
||||||
return performSuspending(__db, false, true) { _connection ->
|
return performSuspending(__db, false, true) { _connection ->
|
||||||
|
|||||||
+9
-9
@@ -1,9 +1,9 @@
|
|||||||
com.wordpuzzle.hangul.app-pngs-0 D:\Workspace\android\wordpuzzles\app\build\generated\res\pngs\debug
|
com.wordpuzzle.hangul.app-pngs-0 /home/gerd/Workspace/AndroidStudioProjects/wordpuzzles/app/build/generated/res/pngs/debug
|
||||||
com.wordpuzzle.hangul.app-resValues-1 D:\Workspace\android\wordpuzzles\app\build\generated\res\resValues\debug
|
com.wordpuzzle.hangul.app-resValues-1 /home/gerd/Workspace/AndroidStudioProjects/wordpuzzles/app/build/generated/res/resValues/debug
|
||||||
com.wordpuzzle.hangul.app-updated_navigation_xml-2 D:\Workspace\android\wordpuzzles\app\build\generated\updated_navigation_xml\debug
|
com.wordpuzzle.hangul.app-updated_navigation_xml-2 /home/gerd/Workspace/AndroidStudioProjects/wordpuzzles/app/build/generated/updated_navigation_xml/debug
|
||||||
com.wordpuzzle.hangul.app-packageDebugResources-3 D:\Workspace\android\wordpuzzles\app\build\intermediates\incremental\debug\packageDebugResources\merged.dir
|
com.wordpuzzle.hangul.app-packageDebugResources-3 /home/gerd/Workspace/AndroidStudioProjects/wordpuzzles/app/build/intermediates/incremental/debug/packageDebugResources/merged.dir
|
||||||
com.wordpuzzle.hangul.app-packageDebugResources-4 D:\Workspace\android\wordpuzzles\app\build\intermediates\incremental\debug\packageDebugResources\stripped.dir
|
com.wordpuzzle.hangul.app-packageDebugResources-4 /home/gerd/Workspace/AndroidStudioProjects/wordpuzzles/app/build/intermediates/incremental/debug/packageDebugResources/stripped.dir
|
||||||
com.wordpuzzle.hangul.app-debug-5 D:\Workspace\android\wordpuzzles\app\build\intermediates\merged_res\debug\mergeDebugResources
|
com.wordpuzzle.hangul.app-debug-5 /home/gerd/Workspace/AndroidStudioProjects/wordpuzzles/app/build/intermediates/merged_res/debug/mergeDebugResources
|
||||||
com.wordpuzzle.hangul.app-debug-6 D:\Workspace\android\wordpuzzles\app\src\debug\res
|
com.wordpuzzle.hangul.app-debug-6 /home/gerd/Workspace/AndroidStudioProjects/wordpuzzles/app/src/debug/res
|
||||||
com.wordpuzzle.hangul.app-main-7 D:\Workspace\android\wordpuzzles\app\src\main\res
|
com.wordpuzzle.hangul.app-main-7 /home/gerd/Workspace/AndroidStudioProjects/wordpuzzles/app/src/main/res
|
||||||
gradleHome-0 C:\Users\minar\.gradle
|
gradleHome-0 /home/gerd/.gradle
|
||||||
Binary file not shown.
@@ -11,8 +11,8 @@
|
|||||||
"type": "SINGLE",
|
"type": "SINGLE",
|
||||||
"filters": [],
|
"filters": [],
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"versionCode": 1,
|
"versionCode": 4,
|
||||||
"versionName": "1.0.0",
|
"versionName": "1.1.2",
|
||||||
"outputFile": "app-debug.apk"
|
"outputFile": "app-debug.apk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
appMetadataVersion=1.1
|
appMetadataVersion=1.1
|
||||||
androidGradlePluginVersion=9.4.0
|
androidGradlePluginVersion=9.4.1
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
4
|
12
|
||||||
BIN
Binary file not shown.
Binary file not shown.
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"META-INF/androidx.navigation_navigation-common-ktx.version","name":"META-INF/androidx.navigation_navigation-common-ktx.version","size":6,"crc":-402369105}]
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/compose/ui/ExperimentalComposeUiApi.class","name":"androidx/compose/ui/ExperimentalComposeUiApi.class","size":786,"crc":-418551283},{"key":"androidx/compose/ui/InternalComposeUiApi.class","name":"androidx/compose/ui/InternalComposeUiApi.class","size":864,"crc":-886945856},{"key":"androidx/compose/ui/util/AndroidTrace_androidKt.class","name":"androidx/compose/ui/util/AndroidTrace_androidKt.class","size":1375,"crc":-1745608269},{"key":"androidx/compose/ui/util/InlineClassHelperKt.class","name":"androidx/compose/ui/util/InlineClassHelperKt.class","size":2796,"crc":1839478123},{"key":"androidx/compose/ui/util/InlineClassHelper_jvmKt.class","name":"androidx/compose/ui/util/InlineClassHelper_jvmKt.class","size":1136,"crc":48882481},{"key":"androidx/compose/ui/util/ListUtilsKt.class","name":"androidx/compose/ui/util/ListUtilsKt.class","size":23551,"crc":-67452821},{"key":"androidx/compose/ui/util/MathHelpersKt.class","name":"androidx/compose/ui/util/MathHelpersKt.class","size":4040,"crc":1106318760},{"key":"META-INF/androidx.compose.ui_ui-util.version","name":"META-INF/androidx.compose.ui_ui-util.version","size":6,"crc":921909079},{"key":"META-INF/ui-util_release.kotlin_module","name":"META-INF/ui-util_release.kotlin_module","size":150,"crc":721414718}]
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/lifecycle/AbstractSavedStateViewModelFactory.class","name":"androidx/lifecycle/AbstractSavedStateViewModelFactory.class","size":6266,"crc":624322821},{"key":"androidx/lifecycle/LegacySavedStateHandleController$OnRecreation.class","name":"androidx/lifecycle/LegacySavedStateHandleController$OnRecreation.class","size":3023,"crc":1352335096},{"key":"androidx/lifecycle/LegacySavedStateHandleController$tryToAddRecreator$1.class","name":"androidx/lifecycle/LegacySavedStateHandleController$tryToAddRecreator$1.class","size":2215,"crc":-1110321192},{"key":"androidx/lifecycle/LegacySavedStateHandleController.class","name":"androidx/lifecycle/LegacySavedStateHandleController.class","size":4242,"crc":1010501014},{"key":"androidx/lifecycle/SavedStateHandle$Companion.class","name":"androidx/lifecycle/SavedStateHandle$Companion.class","size":4008,"crc":1738275723},{"key":"androidx/lifecycle/SavedStateHandle$SavingStateLiveData.class","name":"androidx/lifecycle/SavedStateHandle$SavingStateLiveData.class","size":2677,"crc":309253364},{"key":"androidx/lifecycle/SavedStateHandle.class","name":"androidx/lifecycle/SavedStateHandle.class","size":13780,"crc":1271817115},{"key":"androidx/lifecycle/SavedStateHandleAttacher.class","name":"androidx/lifecycle/SavedStateHandleAttacher.class","size":2410,"crc":1374032691},{"key":"androidx/lifecycle/SavedStateHandleController.class","name":"androidx/lifecycle/SavedStateHandleController.class","size":4069,"crc":-1267825771},{"key":"androidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1.class","name":"androidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1.class","size":1015,"crc":1680652581},{"key":"androidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1.class","name":"androidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1.class","size":1095,"crc":664941330},{"key":"androidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1.class","name":"androidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1.class","size":1077,"crc":-1417974376},{"key":"androidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1.class","name":"androidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1.class","size":1877,"crc":1377385748},{"key":"androidx/lifecycle/SavedStateHandleSupport.class","name":"androidx/lifecycle/SavedStateHandleSupport.class","size":8455,"crc":-612439321},{"key":"androidx/lifecycle/SavedStateHandlesProvider$viewModel$2.class","name":"androidx/lifecycle/SavedStateHandlesProvider$viewModel$2.class","size":1569,"crc":-1314923407},{"key":"androidx/lifecycle/SavedStateHandlesProvider.class","name":"androidx/lifecycle/SavedStateHandlesProvider.class","size":5980,"crc":-1504923530},{"key":"androidx/lifecycle/SavedStateHandlesVM.class","name":"androidx/lifecycle/SavedStateHandlesVM.class","size":1202,"crc":1376387357},{"key":"androidx/lifecycle/SavedStateViewModelFactory.class","name":"androidx/lifecycle/SavedStateViewModelFactory.class","size":8826,"crc":-1008829102},{"key":"androidx/lifecycle/SavedStateViewModelFactoryKt.class","name":"androidx/lifecycle/SavedStateViewModelFactoryKt.class","size":5061,"crc":473598696},{"key":"META-INF/androidx.lifecycle_lifecycle-viewmodel-savedstate.version","name":"META-INF/androidx.lifecycle_lifecycle-viewmodel-savedstate.version","size":6,"crc":-249600786},{"key":"META-INF/lifecycle-viewmodel-savedstate_release.kotlin_module","name":"META-INF/lifecycle-viewmodel-savedstate_release.kotlin_module","size":101,"crc":-1891795020}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":160,"crc":-835500566},{"key":"META-INF/kotlin-android-extensions-runtime.kotlin_module","name":"META-INF/kotlin-android-extensions-runtime.kotlin_module","size":24,"crc":-1111743755},{"key":"kotlinx/android/extensions/CacheImplementation$Companion.class","name":"kotlinx/android/extensions/CacheImplementation$Companion.class","size":1213,"crc":140420271},{"key":"kotlinx/android/extensions/CacheImplementation.class","name":"kotlinx/android/extensions/CacheImplementation.class","size":2416,"crc":347669202},{"key":"kotlinx/android/extensions/ContainerOptions.class","name":"kotlinx/android/extensions/ContainerOptions.class","size":760,"crc":2087980103},{"key":"kotlinx/android/extensions/LayoutContainer.class","name":"kotlinx/android/extensions/LayoutContainer.class","size":617,"crc":-1755010923},{"key":"kotlinx/android/parcel/IgnoredOnParcel.class","name":"kotlinx/android/parcel/IgnoredOnParcel.class","size":778,"crc":314959443},{"key":"kotlinx/android/parcel/Parceler$DefaultImpls.class","name":"kotlinx/android/parcel/Parceler$DefaultImpls.class","size":933,"crc":1163865465},{"key":"kotlinx/android/parcel/Parceler.class","name":"kotlinx/android/parcel/Parceler.class","size":1162,"crc":-532188771},{"key":"kotlinx/android/parcel/Parcelize.class","name":"kotlinx/android/parcel/Parcelize.class","size":806,"crc":-844911176},{"key":"kotlinx/android/parcel/RawValue.class","name":"kotlinx/android/parcel/RawValue.class","size":814,"crc":1186390907},{"key":"kotlinx/android/parcel/TypeParceler$Container.class","name":"kotlinx/android/parcel/TypeParceler$Container.class","size":883,"crc":2072132443},{"key":"kotlinx/android/parcel/TypeParceler.class","name":"kotlinx/android/parcel/TypeParceler.class","size":1282,"crc":1342335667},{"key":"kotlinx/android/parcel/WriteWith.class","name":"kotlinx/android/parcel/WriteWith.class","size":992,"crc":61107936}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/versionedparcelable/CustomVersionedParcelable.class","name":"androidx/versionedparcelable/CustomVersionedParcelable.class","size":915,"crc":-363159068},{"key":"androidx/versionedparcelable/NonParcelField.class","name":"androidx/versionedparcelable/NonParcelField.class","size":676,"crc":1361393714},{"key":"androidx/versionedparcelable/ParcelField.class","name":"androidx/versionedparcelable/ParcelField.class","size":762,"crc":-355164638},{"key":"androidx/versionedparcelable/ParcelImpl$1.class","name":"androidx/versionedparcelable/ParcelImpl$1.class","size":1191,"crc":-60532325},{"key":"androidx/versionedparcelable/ParcelImpl.class","name":"androidx/versionedparcelable/ParcelImpl.class","size":1979,"crc":1919067054},{"key":"androidx/versionedparcelable/ParcelUtils.class","name":"androidx/versionedparcelable/ParcelUtils.class","size":5523,"crc":-1129855369},{"key":"androidx/versionedparcelable/VersionedParcel$1.class","name":"androidx/versionedparcelable/VersionedParcel$1.class","size":1546,"crc":-1038307129},{"key":"androidx/versionedparcelable/VersionedParcel$ParcelException.class","name":"androidx/versionedparcelable/VersionedParcel$ParcelException.class","size":538,"crc":1830934000},{"key":"androidx/versionedparcelable/VersionedParcel.class","name":"androidx/versionedparcelable/VersionedParcel.class","size":29325,"crc":142272959},{"key":"androidx/versionedparcelable/VersionedParcelParcel.class","name":"androidx/versionedparcelable/VersionedParcelParcel.class","size":7429,"crc":-328586236},{"key":"androidx/versionedparcelable/VersionedParcelStream$1.class","name":"androidx/versionedparcelable/VersionedParcelStream$1.class","size":1613,"crc":1775874054},{"key":"androidx/versionedparcelable/VersionedParcelStream$FieldBuffer.class","name":"androidx/versionedparcelable/VersionedParcelStream$FieldBuffer.class","size":1288,"crc":1505456534},{"key":"androidx/versionedparcelable/VersionedParcelStream.class","name":"androidx/versionedparcelable/VersionedParcelStream.class","size":13823,"crc":-1859752855},{"key":"androidx/versionedparcelable/VersionedParcelable.class","name":"androidx/versionedparcelable/VersionedParcelable.class","size":148,"crc":752656910},{"key":"androidx/versionedparcelable/VersionedParcelize.class","name":"androidx/versionedparcelable/VersionedParcelize.class","size":964,"crc":886842821},{"key":"META-INF/androidx.versionedparcelable_versionedparcelable.version","name":"META-INF/androidx.versionedparcelable_versionedparcelable.version","size":6,"crc":1557790284}]
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/interpolator/view/animation/FastOutLinearInInterpolator.class","name":"androidx/interpolator/view/animation/FastOutLinearInInterpolator.class","size":2893,"crc":-586218538},{"key":"androidx/interpolator/view/animation/FastOutSlowInInterpolator.class","name":"androidx/interpolator/view/animation/FastOutSlowInInterpolator.class","size":2876,"crc":-1344934723},{"key":"androidx/interpolator/view/animation/LinearOutSlowInInterpolator.class","name":"androidx/interpolator/view/animation/LinearOutSlowInInterpolator.class","size":2882,"crc":-733508970},{"key":"androidx/interpolator/view/animation/LookupTableInterpolator.class","name":"androidx/interpolator/view/animation/LookupTableInterpolator.class","size":907,"crc":-26214147},{"key":"META-INF/androidx.interpolator_interpolator.version","name":"META-INF/androidx.interpolator_interpolator.version","size":6,"crc":-42031000}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":25,"crc":-301826126}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/savedstate/ViewKt.class","name":"androidx/savedstate/ViewKt.class","size":1242,"crc":-891744385},{"key":"META-INF/androidx.savedstate_savedstate-ktx.version","name":"META-INF/androidx.savedstate_savedstate-ktx.version","size":6,"crc":1315721634},{"key":"META-INF/savedstate-ktx_release.kotlin_module","name":"META-INF/savedstate-ktx_release.kotlin_module","size":55,"crc":1183290022}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/graphics/path/ConicConverter.class","name":"androidx/graphics/path/ConicConverter.class","size":2554,"crc":-2075525229},{"key":"androidx/graphics/path/PathIterator$ConicEvaluation.class","name":"androidx/graphics/path/PathIterator$ConicEvaluation.class","size":1567,"crc":-1050694862},{"key":"androidx/graphics/path/PathIterator.class","name":"androidx/graphics/path/PathIterator.class","size":4616,"crc":1603771064},{"key":"androidx/graphics/path/PathIteratorApi34Impl.class","name":"androidx/graphics/path/PathIteratorApi34Impl.class","size":4428,"crc":130817382},{"key":"androidx/graphics/path/PathIteratorImpl$Companion.class","name":"androidx/graphics/path/PathIteratorImpl$Companion.class","size":836,"crc":-346921140},{"key":"androidx/graphics/path/PathIteratorImpl$WhenMappings.class","name":"androidx/graphics/path/PathIteratorImpl$WhenMappings.class","size":1000,"crc":252266143},{"key":"androidx/graphics/path/PathIteratorImpl.class","name":"androidx/graphics/path/PathIteratorImpl.class","size":5545,"crc":746059062},{"key":"androidx/graphics/path/PathIteratorImplKt.class","name":"androidx/graphics/path/PathIteratorImplKt.class","size":1869,"crc":-1390430380},{"key":"androidx/graphics/path/PathIteratorPreApi34Impl.class","name":"androidx/graphics/path/PathIteratorPreApi34Impl.class","size":3642,"crc":908573320},{"key":"androidx/graphics/path/PathSegment$Type.class","name":"androidx/graphics/path/PathSegment$Type.class","size":1772,"crc":-789665998},{"key":"androidx/graphics/path/PathSegment.class","name":"androidx/graphics/path/PathSegment.class","size":3292,"crc":-1409739059},{"key":"androidx/graphics/path/PathSegmentUtilities.class","name":"androidx/graphics/path/PathSegmentUtilities.class","size":2049,"crc":-1625946079},{"key":"androidx/graphics/path/PathUtilities.class","name":"androidx/graphics/path/PathUtilities.class","size":1994,"crc":1288469232},{"key":"META-INF/androidx.graphics_graphics-path.version","name":"META-INF/androidx.graphics_graphics-path.version","size":6,"crc":-463103703},{"key":"META-INF/graphics-path_release.kotlin_module","name":"META-INF/graphics-path_release.kotlin_module","size":107,"crc":1457114750}]
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":1061,"crc":-1251250516},{"key":"META-INF/maven/com.google.guava/failureaccess/pom.properties","name":"META-INF/maven/com.google.guava/failureaccess/pom.properties","size":138,"crc":1785411800},{"key":"META-INF/maven/com.google.guava/failureaccess/pom.xml","name":"META-INF/maven/com.google.guava/failureaccess/pom.xml","size":2413,"crc":-1906597673},{"key":"com/google/common/util/concurrent/internal/InternalFutureFailureAccess.class","name":"com/google/common/util/concurrent/internal/InternalFutureFailureAccess.class","size":458,"crc":-1842118595},{"key":"com/google/common/util/concurrent/internal/InternalFutures.class","name":"com/google/common/util/concurrent/internal/InternalFutures.class","size":743,"crc":2071911263}]
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/customview/poolingcontainer/PoolingContainer.class","name":"androidx/customview/poolingcontainer/PoolingContainer.class","size":5411,"crc":1218352752},{"key":"androidx/customview/poolingcontainer/PoolingContainerListener.class","name":"androidx/customview/poolingcontainer/PoolingContainerListener.class","size":572,"crc":1704627172},{"key":"androidx/customview/poolingcontainer/PoolingContainerListenerHolder.class","name":"androidx/customview/poolingcontainer/PoolingContainerListenerHolder.class","size":2033,"crc":-1869864933},{"key":"META-INF/androidx.customview_customview-poolingcontainer.version","name":"META-INF/androidx.customview_customview-poolingcontainer.version","size":6,"crc":-42031000},{"key":"META-INF/customview-poolingcontainer_release.kotlin_module","name":"META-INF/customview-poolingcontainer_release.kotlin_module","size":82,"crc":-469476031}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":25,"crc":-301826126},{"key":"META-INF/datastore-core-okio.kotlin_module","name":"META-INF/datastore-core-okio.kotlin_module","size":71,"crc":-842474721},{"key":"androidx/datastore/core/okio/AtomicBoolean.class","name":"androidx/datastore/core/okio/AtomicBoolean.class","size":1091,"crc":1631543537},{"key":"androidx/datastore/core/okio/AtomicInt.class","name":"androidx/datastore/core/okio/AtomicInt.class","size":1258,"crc":328675844},{"key":"androidx/datastore/core/okio/OkioReadScope$readData$1.class","name":"androidx/datastore/core/okio/OkioReadScope$readData$1.class","size":1953,"crc":982954668},{"key":"androidx/datastore/core/okio/OkioReadScope.class","name":"androidx/datastore/core/okio/OkioReadScope.class","size":7626,"crc":1749145141},{"key":"androidx/datastore/core/okio/OkioSerializer.class","name":"androidx/datastore/core/okio/OkioSerializer.class","size":1390,"crc":-1718451737},{"key":"androidx/datastore/core/okio/OkioStorage$1.class","name":"androidx/datastore/core/okio/OkioStorage$1.class","size":2087,"crc":1818981389},{"key":"androidx/datastore/core/okio/OkioStorage$Companion.class","name":"androidx/datastore/core/okio/OkioStorage$Companion.class","size":1485,"crc":915912459},{"key":"androidx/datastore/core/okio/OkioStorage$canonicalPath$2.class","name":"androidx/datastore/core/okio/OkioStorage$canonicalPath$2.class","size":2324,"crc":-1520533305},{"key":"androidx/datastore/core/okio/OkioStorage$createConnection$2.class","name":"androidx/datastore/core/okio/OkioStorage$createConnection$2.class","size":3100,"crc":1101961689},{"key":"androidx/datastore/core/okio/OkioStorage.class","name":"androidx/datastore/core/okio/OkioStorage.class","size":7242,"crc":338528835},{"key":"androidx/datastore/core/okio/OkioStorageConnection$readScope$1.class","name":"androidx/datastore/core/okio/OkioStorageConnection$readScope$1.class","size":2029,"crc":1183308023},{"key":"androidx/datastore/core/okio/OkioStorageConnection$writeScope$1.class","name":"androidx/datastore/core/okio/OkioStorageConnection$writeScope$1.class","size":2072,"crc":1042673907},{"key":"androidx/datastore/core/okio/OkioStorageConnection.class","name":"androidx/datastore/core/okio/OkioStorageConnection.class","size":12958,"crc":-927860441},{"key":"androidx/datastore/core/okio/OkioStorageKt.class","name":"androidx/datastore/core/okio/OkioStorageKt.class","size":1131,"crc":-1071525275},{"key":"androidx/datastore/core/okio/OkioWriteScope$writeData$1.class","name":"androidx/datastore/core/okio/OkioWriteScope$writeData$1.class","size":1868,"crc":-1984904908},{"key":"androidx/datastore/core/okio/OkioWriteScope.class","name":"androidx/datastore/core/okio/OkioWriteScope.class","size":7068,"crc":-271519542},{"key":"androidx/datastore/core/okio/Synchronizer.class","name":"androidx/datastore/core/okio/Synchronizer.class","size":1537,"crc":-2096946248}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/arch/core/executor/ArchTaskExecutor.class","name":"androidx/arch/core/executor/ArchTaskExecutor.class","size":2950,"crc":-173664277},{"key":"androidx/arch/core/executor/DefaultTaskExecutor$1.class","name":"androidx/arch/core/executor/DefaultTaskExecutor$1.class","size":1445,"crc":-1550744660},{"key":"androidx/arch/core/executor/DefaultTaskExecutor$Api28Impl.class","name":"androidx/arch/core/executor/DefaultTaskExecutor$Api28Impl.class","size":834,"crc":1774766260},{"key":"androidx/arch/core/executor/DefaultTaskExecutor.class","name":"androidx/arch/core/executor/DefaultTaskExecutor.class","size":3293,"crc":-1256626107},{"key":"androidx/arch/core/executor/TaskExecutor.class","name":"androidx/arch/core/executor/TaskExecutor.class","size":1053,"crc":1399542030},{"key":"META-INF/androidx.arch.core_core-runtime.version","name":"META-INF/androidx.arch.core_core-runtime.version","size":67,"crc":1307063212}]
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/viewpager/widget/PagerAdapter.class","name":"androidx/viewpager/widget/PagerAdapter.class","size":4231,"crc":1137649263},{"key":"androidx/viewpager/widget/PagerTabStrip$1.class","name":"androidx/viewpager/widget/PagerTabStrip$1.class","size":1031,"crc":-1240140111},{"key":"androidx/viewpager/widget/PagerTabStrip$2.class","name":"androidx/viewpager/widget/PagerTabStrip$2.class","size":1031,"crc":-1127620809},{"key":"androidx/viewpager/widget/PagerTabStrip.class","name":"androidx/viewpager/widget/PagerTabStrip.class","size":7327,"crc":43124920},{"key":"androidx/viewpager/widget/PagerTitleStrip$PageListener.class","name":"androidx/viewpager/widget/PagerTitleStrip$PageListener.class","size":2333,"crc":1083928157},{"key":"androidx/viewpager/widget/PagerTitleStrip$SingleLineAllCapsTransform.class","name":"androidx/viewpager/widget/PagerTitleStrip$SingleLineAllCapsTransform.class","size":1386,"crc":-1473138747},{"key":"androidx/viewpager/widget/PagerTitleStrip.class","name":"androidx/viewpager/widget/PagerTitleStrip.class","size":12631,"crc":-2046776245},{"key":"androidx/viewpager/widget/ViewPager$1.class","name":"androidx/viewpager/widget/ViewPager$1.class","size":1017,"crc":169159464},{"key":"androidx/viewpager/widget/ViewPager$2.class","name":"androidx/viewpager/widget/ViewPager$2.class","size":571,"crc":-481935440},{"key":"androidx/viewpager/widget/ViewPager$3.class","name":"androidx/viewpager/widget/ViewPager$3.class","size":700,"crc":-118651813},{"key":"androidx/viewpager/widget/ViewPager$4.class","name":"androidx/viewpager/widget/ViewPager$4.class","size":1986,"crc":554889883},{"key":"androidx/viewpager/widget/ViewPager$DecorView.class","name":"androidx/viewpager/widget/ViewPager$DecorView.class","size":528,"crc":-950931320},{"key":"androidx/viewpager/widget/ViewPager$ItemInfo.class","name":"androidx/viewpager/widget/ViewPager$ItemInfo.class","size":533,"crc":1272630321},{"key":"androidx/viewpager/widget/ViewPager$LayoutParams.class","name":"androidx/viewpager/widget/ViewPager$LayoutParams.class","size":1246,"crc":366823533},{"key":"androidx/viewpager/widget/ViewPager$MyAccessibilityDelegate.class","name":"androidx/viewpager/widget/ViewPager$MyAccessibilityDelegate.class","size":2526,"crc":2109101101},{"key":"androidx/viewpager/widget/ViewPager$OnAdapterChangeListener.class","name":"androidx/viewpager/widget/ViewPager$OnAdapterChangeListener.class","size":526,"crc":-2027879253},{"key":"androidx/viewpager/widget/ViewPager$OnPageChangeListener.class","name":"androidx/viewpager/widget/ViewPager$OnPageChangeListener.class","size":425,"crc":695229708},{"key":"androidx/viewpager/widget/ViewPager$PageTransformer.class","name":"androidx/viewpager/widget/ViewPager$PageTransformer.class","size":367,"crc":410653001},{"key":"androidx/viewpager/widget/ViewPager$PagerObserver.class","name":"androidx/viewpager/widget/ViewPager$PagerObserver.class","size":746,"crc":645832464},{"key":"androidx/viewpager/widget/ViewPager$SavedState$1.class","name":"androidx/viewpager/widget/ViewPager$SavedState$1.class","size":1705,"crc":479450836},{"key":"androidx/viewpager/widget/ViewPager$SavedState.class","name":"androidx/viewpager/widget/ViewPager$SavedState.class","size":2417,"crc":107589641},{"key":"androidx/viewpager/widget/ViewPager$SimpleOnPageChangeListener.class","name":"androidx/viewpager/widget/ViewPager$SimpleOnPageChangeListener.class","size":919,"crc":-651217725},{"key":"androidx/viewpager/widget/ViewPager$ViewPositionComparator.class","name":"androidx/viewpager/widget/ViewPager$ViewPositionComparator.class","size":1333,"crc":-1413797540},{"key":"androidx/viewpager/widget/ViewPager.class","name":"androidx/viewpager/widget/ViewPager.class","size":51337,"crc":-2522352},{"key":"META-INF/androidx.viewpager_viewpager.version","name":"META-INF/androidx.viewpager_viewpager.version","size":6,"crc":-42031000}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/loader/app/LoaderManager$LoaderCallbacks.class","name":"androidx/loader/app/LoaderManager$LoaderCallbacks.class","size":946,"crc":-123528875},{"key":"androidx/loader/app/LoaderManager.class","name":"androidx/loader/app/LoaderManager.class","size":2244,"crc":156436383},{"key":"androidx/loader/app/LoaderManagerImpl$LoaderInfo.class","name":"androidx/loader/app/LoaderManagerImpl$LoaderInfo.class","size":7635,"crc":-1955402743},{"key":"androidx/loader/app/LoaderManagerImpl$LoaderObserver.class","name":"androidx/loader/app/LoaderManagerImpl$LoaderObserver.class","size":3237,"crc":866989739},{"key":"androidx/loader/app/LoaderManagerImpl$LoaderViewModel$1.class","name":"androidx/loader/app/LoaderManagerImpl$LoaderViewModel$1.class","size":1102,"crc":-1482526164},{"key":"androidx/loader/app/LoaderManagerImpl$LoaderViewModel.class","name":"androidx/loader/app/LoaderManagerImpl$LoaderViewModel.class","size":4255,"crc":862018756},{"key":"androidx/loader/app/LoaderManagerImpl.class","name":"androidx/loader/app/LoaderManagerImpl.class","size":7525,"crc":-1905229766},{"key":"androidx/loader/content/AsyncTaskLoader$LoadTask.class","name":"androidx/loader/content/AsyncTaskLoader$LoadTask.class","size":2590,"crc":-1781583970},{"key":"androidx/loader/content/AsyncTaskLoader.class","name":"androidx/loader/content/AsyncTaskLoader.class","size":5894,"crc":-1443051443},{"key":"androidx/loader/content/CursorLoader.class","name":"androidx/loader/content/CursorLoader.class","size":6564,"crc":1182075271},{"key":"androidx/loader/content/Loader$ForceLoadContentObserver.class","name":"androidx/loader/content/Loader$ForceLoadContentObserver.class","size":1018,"crc":1420840201},{"key":"androidx/loader/content/Loader$OnLoadCanceledListener.class","name":"androidx/loader/content/Loader$OnLoadCanceledListener.class","size":493,"crc":1597944693},{"key":"androidx/loader/content/Loader$OnLoadCompleteListener.class","name":"androidx/loader/content/Loader$OnLoadCompleteListener.class","size":553,"crc":-1004412857},{"key":"androidx/loader/content/Loader.class","name":"androidx/loader/content/Loader.class","size":7784,"crc":-309363131},{"key":"androidx/loader/content/ModernAsyncTask$1.class","name":"androidx/loader/content/ModernAsyncTask$1.class","size":1122,"crc":-1522224884},{"key":"androidx/loader/content/ModernAsyncTask$2.class","name":"androidx/loader/content/ModernAsyncTask$2.class","size":1730,"crc":-54802885},{"key":"androidx/loader/content/ModernAsyncTask$3.class","name":"androidx/loader/content/ModernAsyncTask$3.class","size":1946,"crc":999679769},{"key":"androidx/loader/content/ModernAsyncTask$4.class","name":"androidx/loader/content/ModernAsyncTask$4.class","size":818,"crc":781657903},{"key":"androidx/loader/content/ModernAsyncTask$AsyncTaskResult.class","name":"androidx/loader/content/ModernAsyncTask$AsyncTaskResult.class","size":951,"crc":565889747},{"key":"androidx/loader/content/ModernAsyncTask$InternalHandler.class","name":"androidx/loader/content/ModernAsyncTask$InternalHandler.class","size":1258,"crc":-98894051},{"key":"androidx/loader/content/ModernAsyncTask$Status.class","name":"androidx/loader/content/ModernAsyncTask$Status.class","size":1243,"crc":278128340},{"key":"androidx/loader/content/ModernAsyncTask$WorkerRunnable.class","name":"androidx/loader/content/ModernAsyncTask$WorkerRunnable.class","size":796,"crc":-1597044986},{"key":"androidx/loader/content/ModernAsyncTask.class","name":"androidx/loader/content/ModernAsyncTask.class","size":7908,"crc":692681611},{"key":"META-INF/androidx.loader_loader.version","name":"META-INF/androidx.loader_loader.version","size":6,"crc":-42031000}]
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/savedstate/Recreator$Companion.class","name":"androidx/savedstate/Recreator$Companion.class","size":881,"crc":-2099199957},{"key":"androidx/savedstate/Recreator$SavedStateProvider.class","name":"androidx/savedstate/Recreator$SavedStateProvider.class","size":2367,"crc":1821800407},{"key":"androidx/savedstate/Recreator.class","name":"androidx/savedstate/Recreator.class","size":5559,"crc":-533493763},{"key":"androidx/savedstate/SavedStateRegistry$AutoRecreated.class","name":"androidx/savedstate/SavedStateRegistry$AutoRecreated.class","size":784,"crc":567056175},{"key":"androidx/savedstate/SavedStateRegistry$Companion.class","name":"androidx/savedstate/SavedStateRegistry$Companion.class","size":887,"crc":900872896},{"key":"androidx/savedstate/SavedStateRegistry$SavedStateProvider.class","name":"androidx/savedstate/SavedStateRegistry$SavedStateProvider.class","size":709,"crc":-309935901},{"key":"androidx/savedstate/SavedStateRegistry.class","name":"androidx/savedstate/SavedStateRegistry.class","size":10105,"crc":788600212},{"key":"androidx/savedstate/SavedStateRegistryController$Companion.class","name":"androidx/savedstate/SavedStateRegistryController$Companion.class","size":1607,"crc":-1819286630},{"key":"androidx/savedstate/SavedStateRegistryController.class","name":"androidx/savedstate/SavedStateRegistryController.class","size":4330,"crc":-287729808},{"key":"androidx/savedstate/SavedStateRegistryOwner.class","name":"androidx/savedstate/SavedStateRegistryOwner.class","size":755,"crc":-979039875},{"key":"androidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1.class","name":"androidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1.class","size":1846,"crc":423512158},{"key":"androidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2.class","name":"androidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2.class","size":2045,"crc":-1356874610},{"key":"androidx/savedstate/ViewTreeSavedStateRegistryOwner.class","name":"androidx/savedstate/ViewTreeSavedStateRegistryOwner.class","size":2543,"crc":1459979664},{"key":"META-INF/androidx.savedstate_savedstate.version","name":"META-INF/androidx.savedstate_savedstate.version","size":6,"crc":1315721634},{"key":"META-INF/savedstate_release.kotlin_module","name":"META-INF/savedstate_release.kotlin_module","size":80,"crc":-912612184}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":225,"crc":1334212140},{"key":"META-INF/versions/9/module-info.class","name":"META-INF/versions/9/module-info.class","size":287,"crc":-1907208598}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
-1
@@ -1 +0,0 @@
|
|||||||
[{"key":"androidx/lifecycle/LifecycleService.class","name":"androidx/lifecycle/LifecycleService.class","size":2658,"crc":-3702339},{"key":"androidx/lifecycle/ServiceLifecycleDispatcher$DispatchRunnable.class","name":"androidx/lifecycle/ServiceLifecycleDispatcher$DispatchRunnable.class","size":1918,"crc":-985917504},{"key":"androidx/lifecycle/ServiceLifecycleDispatcher.class","name":"androidx/lifecycle/ServiceLifecycleDispatcher.class","size":2975,"crc":-2091535168},{"key":"META-INF/androidx.lifecycle_lifecycle-service.version","name":"META-INF/androidx.lifecycle_lifecycle-service.version","size":6,"crc":-249600786},{"key":"META-INF/lifecycle-service_release.kotlin_module","name":"META-INF/lifecycle-service_release.kotlin_module","size":24,"crc":1613429616}]
|
|
||||||
-1
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user