Framework7์ Vue, React, Svelte ๋ฑ๊ณผ ํตํฉํด์ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋ ฅํ ๋ชจ๋ฐ์ผ UI ํ๋ ์์ํฌ์ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ Framework7 + Vue + Vite ์กฐํฉ์ผ๋ก ๋ง๋ ํ๋ก์ ํธ๋ฅผ Android์์ ์คํ ๊ฐ๋ฅํ APK ํ์ผ๋ก ํจํค์งํ๋ ์ ๊ณผ์ ์ ์๊ฐํฉ๋๋ค.
โ 1. ํ๋ก์ ํธ ๋น๋ ์ค๋น
๋จผ์ ํ๋ก์ ํธ ๋ด ์น ์์ฐ์ ๋น๋ํฉ๋๋ค. Vite ๊ธฐ๋ฐ์ด๋ผ๋ฉด ์๋ ๋ช ๋ น์ด๋ก ๋น๋ํ๋ฉด ๋ฉ๋๋ค:
npm run build
์ด ์์ ์ ํตํด www ๋๋ dist ํด๋์ index.html๊ณผ ๋ฒ๋ค๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ค์ด ์์ฑ๋ฉ๋๋ค.
โ 2. Capacitor ์ค์ ๋ฐ Android ํ๋ซํผ ์ถ๊ฐ
์น ์ฑ์ ๋ค์ดํฐ๋ธ ์ฑ์ผ๋ก ๊ฐ์ธ๊ธฐ ์ํด Capacitor๋ฅผ ์ฌ์ฉํฉ๋๋ค.
npx cap init
์ง๋ฌธ์ ๋ตํ๋ฉฐ ์ฑ ์ด๋ฆ๊ณผ ID (com.yourcompany.app)์ ์ค์ ํฉ๋๋ค.
์ดํ Android ํ๋ซํผ์ ์ถ๊ฐํฉ๋๋ค:
npx cap add android
์ด ๋ช ๋ น์ android/ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ Android Studio ํ๋ก์ ํธ๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
โ 3. Capacitor ์ค์ ํ์ธ (capacitor.config.ts)
capacitor.config.ts ๋๋ capacitor.config.json ํ์ผ์์ webDir ๊ฒฝ๋ก๊ฐ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ ํด๋์ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค:
const config = {
webDir: 'www', // ๋๋ 'dist'
...
};
โ 4. ๋น๋ ๊ฒฐ๊ณผ ๋ณต์ฌ
npx cap copy
์ด ๋ช ๋ น์ ์น ์์ฐ์ Android ํ๋ก์ ํธ๋ก ๋ณต์ฌํฉ๋๋ค.
โ 5. Android Studio์์ ์ด๊ธฐ
npx cap open android
Android Studio๊ฐ ์ด๋ฆฌ๋ฉด ์๋์ผ๋ก Gradle Sync๊ฐ ์คํ๋ฉ๋๋ค.
โ 6. ์๋ฎฌ๋ ์ดํฐ ๋๋ ์ค๊ธฐ๊ธฐ์์ ์คํ
Android Studio์์:
- ์๋จ ํด๋ฐ โถ๏ธ ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋
- ๋ฉ๋ด: Run > Run โappโ
Device Manager์์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋ง๋ค๊ฑฐ๋, ์ค๊ธฐ๊ธฐ๋ฅผ USB๋ก ์ฐ๊ฒฐํด๋ ๋ฉ๋๋ค.
โ 7. APK ํจํค์ง
๊ฐ๋ฐ์ฉ APK ๋ง๋ค๊ธฐ
Build > Build Bundle(s) / APK(s) > Build APK(s)
๋น๋๊ฐ ์๋ฃ๋๋ฉด ๊ฒฝ๋ก๊ฐ ์ถ๋ ฅ๋๊ณ , [locate] ๋ฒํผ์ ํด๋ฆญํด APK ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค:
android/app/build/outputs/apk/debug/app-debug.apk
๋ฆด๋ฆฌ์ฆ์ฉ APK ๋ง๋ค๊ธฐ
๋ฆด๋ฆฌ์ฆ์ฉ ํค์คํ ์ด๋ฅผ ๋ง๋ค์ด ์๋ช ํ ํ, ์๋๋ก ๋น๋:
Build > Generate Signed Bundle / APK > APK
๐งช ์ค๊ธฐ๊ธฐ์์ ํ ์คํธํ๊ธฐ
APK ํ์ผ์ ์๋๋ก์ด๋ ๊ธฐ๊ธฐ์ ์ค์นํ๋ ค๋ฉด:
adb install path/to/app-debug.apk
๋๋ฐ์ด์ค์์ โ์ถ์ฒ๋ฅผ ์ ์ ์๋ ์ฑ ์ค์น ํ์ฉโ ์ต์ ์ด ํ์ํ ์ ์์ต๋๋ค.
์ด์ Framework7๋ก ๋ง๋ ์น ์ฑ์ Android์์ ์ค์น ๊ฐ๋ฅํ ๋ค์ดํฐ๋ธ APK๋ก ํจํค์งํ ์ ์๊ฒ ๋์์ต๋๋ค. ๋์ผํ ๋ฐฉ์์ผ๋ก iOS ์ฑ๋ ๋ง๋ค ์ ์์ง๋ง, iOS๋ macOS์ Xcode ํ๊ฒฝ์ด ํ์์ ๋๋ค.
๐ ๊ด๋ จ ์๋ฃ
๐ ๊ถ๊ธํ ์ ์ด๋ ์ค๋ฅ๊ฐ ์๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์. ๋น ๋ฅด๊ฒ ๋ต๋ณ๋๋ฆฌ๊ฒ ์ต๋๋ค!