Initial commit: U10 Pro 디지털 사이니지 세팅 자동화 도구

This commit is contained in:
2025-12-30 16:54:02 +09:00
commit 3296e318d8
22 changed files with 21175 additions and 0 deletions

26
.gitignore vendored Normal file
View File

@ -0,0 +1,26 @@
# 임시 파일
*.tmp
*.log
temp_*.txt
spec_report.txt
# Python 캐시
__pycache__/
*.py[cod]
*$py.class
# OS 생성 파일
Thumbs.db
ehthumbs.db
Desktop.ini
.DS_Store
# IDE
.vscode/
.idea/
*.suo
*.user
# 테스트/백업
*.bak
*.backup

91
README.md Normal file
View File

@ -0,0 +1,91 @@
# U10 Pro 디지털 사이니지 세팅 자동화
T오더에서 사용하던 태블릿(U10 Pro)을 디지털 사이니지 대용으로 전환하기 위한 자동화 세팅 도구입니다.
## 📁 폴더 구조
```
u10pro_setting/
├── setup.bat # 메인 자동화 스크립트
├── spec_chk.bat # 기기 사양 확인 스크립트
├── README.md # 프로젝트 설명서
├── sdk/ # Android SDK Platform Tools
│ ├── adb.exe # (별도 다운로드 필요)
│ ├── fastboot.exe # (별도 다운로드 필요)
│ └── ...
└── data/ # 태블릿에 삽입될 데이터
├── macrodroid.apk
├── macrodroid.mdr
├── photos.apk
└── wallpaper.jpg
```
## 🚀 사용 방법
### 사전 준비
1. **SDK 다운로드**: [Android SDK Platform Tools](https://developer.android.com/studio/releases/platform-tools) 다운로드 후 `sdk/` 폴더에 압축 해제
2. **USB 디버깅 활성화**: 태블릿에서 개발자 옵션 > USB 디버깅 활성화
2. **USB 케이블 연결**: 컴퓨터와 태블릿을 USB 케이블로 연결
3. **ADB 인증 허용**: 태블릿에서 "이 컴퓨터에서 USB 디버깅 허용" 팝업 승인
### 기기 사양 확인
```powershell
.\spec_chk.bat
```
태블릿의 모델명, OS 버전, 센서 탑재 여부 등을 확인합니다.
### 자동 세팅 실행
```powershell
.\setup.bat
```
실행 후 기기를 연결하면 자동으로 다음 작업이 수행됩니다:
1. **WiFi 설정** - 지정된 네트워크에 자동 연결
2. **앱 정리** - T-Order, YouTube 등 불필요한 앱 제거
3. **시스템 최적화** - 애니메이션 비활성화, 화면 꺼짐 방지
4. **앱 설치** - MacroDroid, Synology Photos 설치
5. **배경화면 설정** - 지정된 이미지로 배경화면 변경
6. **권한 자동 부여** - MacroDroid 권한 자동 설정
7. **매크로 전송** - 자동화 매크로 프로필 전송
8. **앱 실행** - 설치된 앱 자동 실행
## ⚙️ 설정 변경
`setup.bat` 파일 상단의 설정 영역을 수정하세요:
```batch
:: --- [설정 영역] ---
set "DEBUG_MODE=ON" :: ON: 모든 로그 출력 / OFF: 간소화된 출력 모드
set "SSID=fg" :: WiFi SSID
set "PW=Fg9576861!" :: WiFi 비밀번호
```
## 📦 data 폴더 파일 설명
| 파일 | 설명 |
|------|------|
| `macrodroid.apk` | 자동화 앱 (MacroDroid) |
| `macrodroid.mdr` | 자동화 매크로 설정 파일 |
| `photos.apk` | Synology Photos 앱 |
| `wallpaper.jpg` | 배경화면 이미지 |
## 🔧 문제 해결
### ADB 기기가 인식되지 않을 때
1. USB 드라이버 재설치
2. USB 케이블 교체 (데이터 전송 지원 케이블인지 확인)
3. 다른 USB 포트 시도
### 권한 오류 발생 시
일부 권한은 기기에서 수동 허용이 필요할 수 있습니다. MacroDroid 앱 실행 후 권한 안내를 따라주세요.
## 📝 License
내부 사용 목적으로 제작되었습니다.

BIN
data/macrodroid.apk Normal file

Binary file not shown.

1
data/macrodroid.mdr Normal file

File diff suppressed because one or more lines are too long

BIN
data/photos.apk Normal file

Binary file not shown.

BIN
data/wallpaper.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
sdk/AdbWinApi.dll Normal file

Binary file not shown.

BIN
sdk/AdbWinUsbApi.dll Normal file

Binary file not shown.

20754
sdk/NOTICE.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
sdk/adb.exe Normal file

Binary file not shown.

BIN
sdk/etc1tool.exe Normal file

Binary file not shown.

BIN
sdk/fastboot.exe Normal file

Binary file not shown.

BIN
sdk/hprof-conv.exe Normal file

Binary file not shown.

BIN
sdk/libwinpthread-1.dll Normal file

Binary file not shown.

BIN
sdk/make_f2fs.exe Normal file

Binary file not shown.

BIN
sdk/make_f2fs_casefold.exe Normal file

Binary file not shown.

53
sdk/mke2fs.conf Normal file
View File

@ -0,0 +1,53 @@
[defaults]
base_features = sparse_super,large_file,filetype,dir_index,ext_attr
default_mntopts = acl,user_xattr
enable_periodic_fsck = 0
blocksize = 4096
inode_size = 256
inode_ratio = 16384
reserved_ratio = 1.0
[fs_types]
ext3 = {
features = has_journal
}
ext4 = {
features = has_journal,extent,huge_file,dir_nlink,extra_isize,uninit_bg
inode_size = 256
}
ext4dev = {
features = has_journal,extent,huge_file,flex_bg,inline_data,64bit,dir_nlink,extra_isize
inode_size = 256
options = test_fs=1
}
small = {
blocksize = 1024
inode_size = 128
inode_ratio = 4096
}
floppy = {
blocksize = 1024
inode_size = 128
inode_ratio = 8192
}
big = {
inode_ratio = 32768
}
huge = {
inode_ratio = 65536
}
news = {
inode_ratio = 4096
}
largefile = {
inode_ratio = 1048576
blocksize = -1
}
largefile4 = {
inode_ratio = 4194304
blocksize = -1
}
hurd = {
blocksize = 4096
inode_size = 128
}

BIN
sdk/mke2fs.exe Normal file

Binary file not shown.

2
sdk/source.properties Normal file
View File

@ -0,0 +1,2 @@
Pkg.UserSrc=false
Pkg.Revision=36.0.0

BIN
sdk/sqlite3.exe Normal file

Binary file not shown.

172
setup.bat Normal file
View File

@ -0,0 +1,172 @@
@echo off
title T-Order Tablet Automation Tool (Multi-Device Loop)
chcp 65001 > nul
:: --- [설정 영역] ---
set "DEBUG_MODE=ON"
set "SSID=fg"
set "PW=Fg9576861!"
set "PKG_MD=com.arlosoft.macrodroid"
set "PKG_PHOTOS=com.synology.projectkailash"
:: 경로 설정 (스크립트 기준 상대경로)
set "SCRIPT_DIR=%~dp0"
set "SDK_DIR=%SCRIPT_DIR%sdk"
set "DATA_DIR=%SCRIPT_DIR%data"
set "WP_FILE=%DATA_DIR%\wallpaper.jpg"
set "MDR_FILE=%DATA_DIR%\macrodroid.mdr"
set "PHOTOS_APK=%DATA_DIR%\photos.apk"
set "MD_APK=%DATA_DIR%\macrodroid.apk"
:: ADB 경로 설정
set "ADB=%SDK_DIR%\adb.exe"
:: ------------------
if "%DEBUG_MODE%"=="ON" (set "LOG=") else (set "LOG=>nul 2>&1")
:: SDK 폴더 확인
if not exist "%ADB%" (
echo [오류] ADB를 찾을 수 없습니다: %ADB%
echo sdk 폴더에 platform-tools가 있는지 확인하세요.
pause
exit /b 1
)
:LOOP_START
cls
echo ===========================================================
echo T-Order 태블릿 세팅 자동화 시스템
echo (디버그 모드: %DEBUG_MODE% / 연속 세팅 활성)
echo ===========================================================
echo * 새로운 기기를 연결하면 자동으로 작업이 시작됩니다.
echo * 모든 작업을 종료하려면 이 창에서 [Ctrl + C]를 눌러주세요.
echo ===========================================================
:CHECK_DEVICE
echo [%TIME%] [준비] 기기 연결 대기 중...
:: 무한 대기 방지 위해 짧은 대기 후 재시도 루프
"%ADB%" wait-for-device
echo [확인] 기기가 연결되었습니다! 작업을 시작합니다.
timeout /t 2 > nul
echo.
echo STEP 1. 네트워크 설정 (WiFi)
echo -----------------------------------------------------------
"%ADB%" shell svc wifi enable %LOG%
"%ADB%" shell "cmd wifi add-network '%SSID%' wpa2 '%PW%'" %LOG%
"%ADB%" shell "cmd wifi connect-network '%SSID%'" %LOG%
echo ^> 무선네트워크 연결 완료
echo.
echo STEP 2. T-Order 앱 및 YouTube 일괄 제거
echo -----------------------------------------------------------
echo ^> 관련 앱(T-Order, YouTube 등) 패키지 스캔 후 순차적 제거 중...
"%ADB%" shell "for p in $(pm list packages | grep -E 'torder|orderhae' | cut -d: -f2); do echo [발견] $p; echo - 데이터 초기화 후 제거...; am force-stop $p; pm clear $p; pm uninstall --user 0 $p; done"
echo.
echo ^> YouTube 등 불필요한 시스템 앱 제거 중...
for %%a in (com.google.android.youtube com.google.android.projection.gearhead com.google.android.keep com.teamviewer.host.market com.teamviewer.quicksupport.market) do (
"%ADB%" shell pm list packages %%a | findstr "%%a" >nul
if not errorlevel 1 (
echo [제거] %%a - 데이터 초기화 후 제거 진행.
"%ADB%" shell "am force-stop %%a; pm clear %%a; pm uninstall --user 0 %%a; pm disable-user --user 0 %%a" %LOG%
) else (
if "%DEBUG_MODE%"=="ON" echo [스킵] %%a - 이미 없음.
)
)
echo ^> STEP 2 완료
echo.
echo STEP 3. 시스템 최적화
echo -----------------------------------------------------------
"%ADB%" shell settings put global window_animation_scale 0 %LOG%
"%ADB%" shell settings put global transition_animation_scale 0 %LOG%
"%ADB%" shell settings put global animator_duration_scale 0 %LOG%
"%ADB%" shell settings put system screen_off_timeout 2147483647 %LOG%
"%ADB%" shell settings put global stay_on_while_plugged_in 3 %LOG%
"%ADB%" shell "service call activity 51 i32 2" %LOG%
echo ^> 리소스 최적화 완료
echo.
echo STEP 4. 필수 앱 설치 및 배경화면
echo -----------------------------------------------------------
"%ADB%" shell pm list packages %PKG_PHOTOS% | findstr /c:"%PKG_PHOTOS%" >nul
if errorlevel 1 (
if exist "%PHOTOS_APK%" (
echo ^> Photos 설치 중...
"%ADB%" install -r "%PHOTOS_APK%"
)
)
"%ADB%" shell pm list packages %PKG_MD% | findstr /c:"%PKG_MD%" >nul
if errorlevel 1 (
if exist "%MD_APK%" (
echo ^> MacroDroid 설치 중...
"%ADB%" install -r "%MD_APK%"
)
)
if exist "%WP_FILE%" (
"%ADB%" push "%WP_FILE%" /data/local/tmp/wallpaper.jpg %LOG%
"%ADB%" shell am start -a android.service.wallpaper.CROP_AND_SET_WALLPAPER ^
-d file:///data/local/tmp/wallpaper.jpg -t image/jpeg ^
-n com.android.wallpaper/.picker.StandalonePreviewActivity ^
--el set_wallpaper 1 --ez finish_on_done true -f 0x10808000 %LOG%
echo ^> [대기] 배경화면 설정 완료 대기 중...
:WAIT_WP
timeout /t 1 > nul
"%ADB%" shell dumpsys window | findstr "mCurrentFocus" | findstr /i "resolver chooser wallpaper StandalonePreviewActivity" >nul
if not errorlevel 1 goto WAIT_WP
echo ^> 배경화면 설정 완료
)
echo.
echo STEP 5. MacroDroid 권한 설정
echo -----------------------------------------------------------
"%ADB%" shell appops set %PKG_MD% WRITE_SETTINGS allow %LOG%
"%ADB%" shell appops set %PKG_MD% SYSTEM_ALERT_WINDOW allow %LOG%
"%ADB%" shell appops set %PKG_MD% GET_USAGE_STATS allow %LOG%
"%ADB%" shell cmd notification allow_dnd %PKG_MD% %LOG%
"%ADB%" shell cmd notification allow_listener %PKG_MD%/com.arlosoft.macrodroid.triggers.services.NotificationService %LOG%
"%ADB%" shell pm grant %PKG_MD% android.permission.WRITE_SECURE_SETTINGS %LOG%
"%ADB%" shell settings put secure enabled_accessibility_services %PKG_MD%/com.arlosoft.macrodroid.accessibility.MacroDroidAccessibilityService %LOG%
"%ADB%" shell settings put secure accessibility_enabled 1 %LOG%
echo ^> 권한 자동 설정 완료
echo.
echo STEP 6. MacroDroid 매크로 프로필 전송
echo -----------------------------------------------------------
if exist "%MDR_FILE%" (
"%ADB%" push "%MDR_FILE%" /sdcard/Download/ %LOG%
echo ^> 매크로 프로필 전송 완료
) else (
echo ^> [경고] 매크로 파일이 없습니다: %MDR_FILE%
)
echo.
echo STEP 7. 앱 직접 실행
echo -----------------------------------------------------------
echo [1/2] 시놀로지 포토 로그인 실행...
"%ADB%" shell am start -n %PKG_PHOTOS%/com.synology.projectkailash.ui.splash.SplashActivity %LOG%
echo [2/2] 매크로드로이드 실행...
"%ADB%" shell monkey -p %PKG_MD% -c android.intent.category.LAUNCHER 1 %LOG%
echo.
echo ===========================================================
echo [%TIME%] 현재 기기 세팅 완료!
echo 기기 연결을 해제하면 새로운 기기 대기 상태로 전환됩니다.
echo ===========================================================
:: 기기 연결 해제 대기 (기기를 뽑을 때까지 대기)
:WAIT_DISCONNECT
"%ADB%" devices | findstr /v "List" | findstr "device" > nul
if not errorlevel 1 (
timeout /t 2 > nul
goto WAIT_DISCONNECT
)
echo [알림] 기기 연결 해제됨. 3초 후 새로운 기기 대기 상태로 돌아갑니다.
timeout /t 3
goto LOOP_START

76
spec_chk.bat Normal file
View File

@ -0,0 +1,76 @@
@echo off
title Device Spec and Sensor Checker
chcp 65001 > nul
:: 경로 설정
set "SCRIPT_DIR=%~dp0"
set "SDK_DIR=%SCRIPT_DIR%sdk"
set "ADB=%SDK_DIR%\adb.exe"
:: SDK 폴더 확인
if not exist "%ADB%" (
echo [오류] ADB를 찾을 수 없습니다: %ADB%
echo sdk 폴더에 platform-tools가 있는지 확인하세요.
pause
exit /b 1
)
echo [기기 사양 및 센서 정보 조회 중...]
:: 1. 하드웨어 사양 조회
for /f "tokens=*" %%a in ('"%ADB%" shell getprop ro.product.model') do set "MODEL=%%a"
for /f "tokens=*" %%a in ('"%ADB%" shell getprop ro.build.version.release') do set "OS_VER=%%a"
for /f "tokens=*" %%a in ('"%ADB%" shell getprop ro.product.cpu.abi') do set "CPU=%%a"
for /f "tokens=3" %%a in ('"%ADB%" shell wm size') do set "RESOLUTION=%%a"
for /f "tokens=3" %%a in ('"%ADB%" shell wm density') do set "DENSITY=%%a"
:: 메모리 조회
set "RAM_VAL=N/A"
for /f "tokens=3" %%a in ('"%ADB%" shell "dumpsys meminfo | grep 'Total RAM:'" 2^>nul') do set "RAM_VAL=%%a"
if "%RAM_VAL%"=="N/A" (
for /f "tokens=3" %%a in ('"%ADB%" shell dumpsys meminfo ^| findstr /C:"Total RAM:"') do set "RAM_VAL=%%a"
)
:: 2. 센서 정보를 조회
set "PROXIMITY=X [미탑재]"
set "LIGHT=X [미탑재]"
set "ACCEL=X [미탑재]"
set "GYRO=X [미탑재]"
set "MAG=X [미탑재]"
:: 센서 정보 정보를 임시 파일로 저장 (속도 최적화)
"%ADB%" shell dumpsys sensorservice > temp_sensors.txt
findstr /i "Proximity" temp_sensors.txt > nul && set "PROXIMITY=O [탑재 확인]"
findstr /i "Light" temp_sensors.txt > nul && set "LIGHT=O [탑재 확인]"
findstr /i "Accelerometer" temp_sensors.txt > nul && set "ACCEL=O [탑재 확인]"
findstr /i "Gyroscope" temp_sensors.txt > nul && set "GYRO=O [탑재 확인]"
findstr /i "Magnetic" temp_sensors.txt > nul && set "MAG=O [탑재 확인]"
if exist temp_sensors.txt del temp_sensors.txt
:: 3. 화면 출력 (사양 정보 출력 + 레포트 추가)
echo.
echo ============================================================
echo DEVICE FULL REPORT (%DATE% %TIME%)
echo ============================================================
echo [기본 장치 정보]
echo 모델명 : %MODEL%
echo 안드로이드 : %OS_VER%
echo CPU 아키텍처 : %CPU%
echo 화면 해상도 : %RESOLUTION%
echo 화면 밀도 : %DENSITY%
echo 메모리(RAM) : %RAM_VAL%
echo ------------------------------------------------------------
echo [하드웨어 센서 현황]
echo 근접 센서 (Proximity) : %PROXIMITY%
echo 조도 센서 (Light) : %LIGHT%
echo 가속도 센서 (Accel) : %ACCEL%
echo 자이로 센서 (Gyro) : %GYRO%
echo 지자기 센서 (Magnetic) : %MAG%
echo ============================================================
echo.
echo 작업이 완료되었습니다. 창을 닫으려면 아무 키나 눌러주세요.
pause > nul
exit