- SettingsScreen: Add DisposableEffect for BroadcastReceiver lifecycle management - MainActivity: Add error logging and permission checks before download - ApkDownloadManager: Add install permission validation with Settings.canRequestPackageInstalls() - Add user feedback with Toast messages for all error cases - Bump version to 1.11.6 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
134 lines
4.6 KiB
Bash
134 lines
4.6 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Android TV App 자동 릴리즈 스크립트
|
|
# 사용법: ./release.sh [버전타입] (major|minor|patch)
|
|
# 예: ./release.sh patch
|
|
|
|
set -e
|
|
|
|
# 색상 정의
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 현재 버전 정보 가져오기
|
|
CURRENT_VERSION=$(grep -o 'versionName = "[^"]*"' app/build.gradle.kts | cut -d'"' -f2)
|
|
CURRENT_CODE=$(grep -o 'versionCode = [0-9]*' app/build.gradle.kts | grep -o '[0-9]*')
|
|
|
|
# 버전 타입 (기본값: patch)
|
|
VERSION_TYPE=${1:-patch}
|
|
|
|
echo -e "${YELLOW}현재 버전: v${CURRENT_VERSION} (build ${CURRENT_CODE})${NC}"
|
|
echo -e "${YELLOW}업데이트 타입: ${VERSION_TYPE}${NC}"
|
|
|
|
# 새 버전 계산
|
|
IFS='.' read -r -a VERSION_PARTS <<< "$CURRENT_VERSION"
|
|
MAJOR=${VERSION_PARTS[0]}
|
|
MINOR=${VERSION_PARTS[1]}
|
|
PATCH=${VERSION_PARTS[2]}
|
|
|
|
if [ "$VERSION_TYPE" = "major" ]; then
|
|
MAJOR=$((MAJOR + 1))
|
|
MINOR=0
|
|
PATCH=0
|
|
elif [ "$VERSION_TYPE" = "minor" ]; then
|
|
MINOR=$((MINOR + 1))
|
|
PATCH=0
|
|
else
|
|
PATCH=$((PATCH + 1))
|
|
fi
|
|
|
|
NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
|
|
NEW_CODE=$((CURRENT_CODE + 1))
|
|
|
|
echo -e "${GREEN}새 버전: v${NEW_VERSION} (build ${NEW_CODE})${NC}"
|
|
|
|
# 확인
|
|
read -p "계속하시겠습니까? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo -e "${RED}취소되었습니다.${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 1. build.gradle.kts 업데이트
|
|
echo -e "${YELLOW}1. build.gradle.kts 업데이트 중...${NC}"
|
|
sed -i "s/versionCode = ${CURRENT_CODE}/versionCode = ${NEW_CODE}/" app/build.gradle.kts
|
|
sed -i "s/versionName = \"${CURRENT_VERSION}\"/versionName = \"${NEW_VERSION}\"/" app/build.gradle.kts
|
|
echo -e "${GREEN} 완료${NC}"
|
|
|
|
# 2. version.json 업데이트
|
|
echo -e "${YELLOW}2. version.json 업데이트 중...${NC}"
|
|
cat > version.json << EOF
|
|
{
|
|
"versionCode": ${NEW_CODE},
|
|
"versionName": "${NEW_VERSION}",
|
|
"apkUrl": "https://git.webpluss.net/sanjeok77/NeFLIX/releases/download/v${NEW_VERSION}/app-release.apk",
|
|
"updateMessage": "v${NEW_VERSION} 업데이트\n- "
|
|
}
|
|
EOF
|
|
echo -e "${GREEN} 완료${NC}"
|
|
echo -e "${YELLOW} ⚠️ version.json의 updateMessage를 수동으로 수정하세요!${NC}"
|
|
|
|
# 3. 변경사항 스테이징
|
|
echo -e "${YELLOW}3. Git 스테이징 중...${NC}"
|
|
git add app/build.gradle.kts version.json
|
|
echo -e "${GREEN} 완료${NC}"
|
|
|
|
# 4. 커밋
|
|
echo -e "${YELLOW}4. Git 커밋 중...${NC}"
|
|
echo "커밋 메시지를 입력하세요 (기본값: 'feat: 버전 업데이트 v${NEW_VERSION}'):"
|
|
read -r COMMIT_MSG
|
|
if [ -z "$COMMIT_MSG" ]; then
|
|
COMMIT_MSG="feat: 버전 업데이트 v${NEW_VERSION}"
|
|
fi
|
|
git commit -m "$COMMIT_MSG" -m "" -m "- versionCode: ${NEW_CODE}" -m "- versionName: ${NEW_VERSION}" -m "" -m "Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)" -m "Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>"
|
|
echo -e "${GREEN} 완료${NC}"
|
|
|
|
# 5. 태그 생성
|
|
echo -e "${YELLOW}5. Git 태그 생성 중...${NC}"
|
|
echo "태그 메시지를 입력하세요 (기본값: 'v${NEW_VERSION}'):"
|
|
read -r TAG_MSG
|
|
if [ -z "$TAG_MSG" ]; then
|
|
TAG_MSG="v${NEW_VERSION}"
|
|
fi
|
|
git tag -a "v${NEW_VERSION}" -m "$TAG_MSG"
|
|
echo -e "${GREEN} 완료${NC}"
|
|
|
|
# 6. 푸시
|
|
echo -e "${YELLOW}6. Git 푸시 중...${NC}"
|
|
git push origin main
|
|
git push origin "v${NEW_VERSION}"
|
|
echo -e "${GREEN} 완료${NC}"
|
|
|
|
# 7. 릴리즈 빌드
|
|
echo -e "${YELLOW}7. 릴리즈 빌드 중...${NC}"
|
|
./gradlew assembleRelease
|
|
echo -e "${GREEN} 완료${NC}"
|
|
|
|
# 8. 릴리즈 정보 출력
|
|
echo ""
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e "${GREEN}릴리즈 준비 완료!${NC}"
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo ""
|
|
echo "다음 단계:"
|
|
echo "1. Gitea에서 릴리즈를 생성하세요:"
|
|
echo " URL: https://git.webpluss.net/sanjeok77/NeFLIX/releases/new"
|
|
echo ""
|
|
echo "2. 또는 curl 명령어로 생성:"
|
|
echo " curl -X POST \"https://git.webpluss.net/api/v1/repos/sanjeok77/NeFLIX/releases\" \\"
|
|
echo " -H \"Authorization: token \$TOKEN\" \\"
|
|
echo " -H \"Content-Type: application/json; charset=utf-8\" \\"
|
|
echo " -d '{\"tag_name\": \"v${NEW_VERSION}\", \"name\": \"v${NEW_VERSION}\", \"body\": \"v${NEW_VERSION} 업데이트\\n- \", \"draft\": false, \"prerelease\": false}'"
|
|
echo ""
|
|
echo "3. APK 업로드:"
|
|
echo " curl -X POST \"https://git.webpluss.net/api/v1/repos/sanjeok77/NeFLIX/releases/<release_id>/assets?name=app-release.apk\" \\"
|
|
echo " -H \"Authorization: token \$TOKEN\" \\"
|
|
echo " -H \"Content-Type: application/octet-stream\" \\"
|
|
echo " --data-binary @\"app/build/outputs/apk/release/app-release.apk\""
|
|
echo ""
|
|
echo -e "${YELLOW}⚠️ version.json의 updateMessage를 수정한 후 다시 커밋하세요!${NC}"
|
|
echo ""
|