[Flutter] Flutter에 안드로이드 폰을 연결해주기
2025. 10. 10. 00:18ㆍDevelopers 공간 [Shorts]/Frontend
728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew,
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter
- Module Bundler : React, Webpack, Parcel
B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS
C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight
1. What? (현상)
이번 글에서는 https://tkayyoo.tistory.com/64에 이어서 아이폰이 아닌 안드로이드폰을 연결하는 과정을 기록해보려고 합니다.
시작에 앞서 아래는 flutter 프로젝트 내의 android 폴더 tree를 가볍게 살펴보면 좋습니다.
- android
- app
├──src
├──debug
└── AndroidManifest.xml
├──main
├──java
├──kotlin
├──res
└──AndroidManifest.xml : 카메라&마이크 등 권한 추가 "<uses-permission>",
프로젝트 Bundle ID 위치 "<manifest>",
URL 스킴 설정 및 API 키 추가 "<activity>"
(3가지 AndroidManifest.xml중에 가장 중요합니다)
**manifest : 안드로이드 시스템이 앱의 코드를 실행하기 전에 확보해야 하는 앱에 대한 필수 정보를 시스템에 제공하는 목록
├──profile
└──AndroidManifest.xml
└──build.gradle : Android 최소 SDK 버전을 명시할 수 있다.(compileSdkVersion) - gradle
└──wrapper
├──gradle-wrapper.jar
└──gradle-wrapper.properties - .gitignore
- build.gradle : 빌드에 사용할 SDK 버전, JAV 버전, application version, 사용하는 library등 모듈의 빌드 방법이 정의된 build script입니다.
** gradle : build tool로 ant, maven, gradle 등의 빌드 도구 들이 있지만 gradle를 사용하고 있습니다. - gradle.properties : 안드로이드에서 어떤 기능들을 활용한 것인지 명시해놓는 것, androidX를 활용할지도 체크할 수 있습니다.(android.useAndroidX=true)
** JetPack : 기존의 "Support Library"라는 라이브러리 모음집을, 개선한 모음집
** androidX : JetPack 내의 라이브러리를 모은 패키지
** Jetifier : 이전에 android에서 사용된 "support library"로 만들어진 third party library들을 AndroidX 프로젝트와 호환되도록 변환해주는 툴 - gradlew
- gradlew.bat
- local.properties
- projectOOO_android.iml
- settings.gradle : 중요
- app
2. Why? (원인)
- X
3. How? (해결책)
<1. PC셋팅>
1-1. PC셋팅 - Java 설치
보통 아래와 같은 에러가 나는 경우 Java를 제대로 잡지 못하거나, 잘못된 Java 버전이 설치된 경우 입니다.
* What went wrong:
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
> Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
Your current JDK is located in /Applications/Android Studio.app/Contents/jre/Contents/Home
You can try some of the following options:
- changing the IDE settings.
- changing the JAVA_HOME environment variable.
- changing 'org.gradle.java.home` in `gradle.properties'.
일단 필요한 경우 모든 Java를 지워준 뒤
sudo rm -rf /Library/Java/JavaVirtualMachines/* # 모든 JDK 배포판 제거(Oracle/Temurin/Azul 등)
sudo rm -rf /Library/Java/Extensions/* # 예전 확장(거의 없음)
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist 2>/dev/null
sudo rm -rf /Library/LaunchDaemons/com.oracle.java.Helper-Tool.plist 2>/dev/null
sudo rm -rf /Library/PrivilegedHelperTools/com.oracle.java.Helper-Tool 2>/dev/null
rm -rf ~/Library/Application\ Support/Oracle/Java
rm -rf ~/.java
rm -rf ~/.jmc
# Check Installed List
brew list --cask | grep -E 'temurin|openjdk|zulu|corretto' || true
brew list | grep -E '^openjdk(@[0-9]+)?$' || true
# Uninstall
brew uninstall --cask temurin@21 # example1
brew uninstall openjdk@17 # example2
# jenv
rm -rf ~/.jenv
sed -i '' '/jenv/d' ~/.zshrc 2>/dev/null
# SDKMAN
rm -rf ~/.sdkman
sed -i '' '/sdkman/d' ~/.zshrc 2>/dev/null
# clear JAVA_HOME in session & .zshrc file
unset JAVA_HOME
sed -i '' '/JAVA_HOME/d' ~/.zshrc 2>/dev/null
sed -i '' '/java_home -v/d' ~/.zshrc 2>/dev/null
# Check
/usr/libexec/java_home -V # "Unable to find any JVMs"가 나오면 완전 제거된 상태
type -a java # /usr/bin/java(Apple stub)만 보이면 정상
원하는 Java 버전을 설치해줍니다.
# (Option) install homebrew
#/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Temurin 17 (LTS)
brew install --cask temurin17
# Setting Java 17 (Basic)
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH="$JAVA_HOME/bin:$PATH"
# Check version
java -version
# Check Project gradlew's java version
cd ./android
./gradlew -v
1-1. PC셋팅 - 프로젝트가 활용할 Java 명시
./android/app/build.gradle 내에 우리가 설치한 Java를 명시해주지 않으면, 프로젝트 내에 있거나 혹은 예상하지 못한 java를 활용할 수도 있습니다.
# Check java path
/usr/libexec/java_home -V
# ex) /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
# Write to android/gradle.properties
echo 'org.gradle.java.home=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home' >> android/gradle.properties
<2. 스마트 폰 셋팅>
2-1. 스마트폰 셋팅 - 개발자 모드 켜기 : 연결을 하고 flutter doctor -v를 하면 에러가 나기 때문에, 개발자 모드를 켜줘야합니다. 아래와 같이 빌드번호를 7번 선택해주면 자동으로 켜집니다.

2-2. 스마트폰 셋팅 - USB 디버그 켜기 : USB로 연결된 폰에서 동작하도록 이 기능을 켜주어야 합니다.

혹시나 동작하지 않으면 캐시와 빌드를 지우거나
# 1) Clean Flutter, gradlew
flutter clean
cd android
./gradlew --stop
rm -rf ~/.gradle/caches ~/.gradle/daemon
cd ..
# 2) Reset dependencies
flutter pub get
android 폴더 자체를 지우고 새로 만드는 것도 좋습니다.
mv android android_backup
flutter create --platforms=android .
728x90
반응형
'Developers 공간 [Shorts] > Frontend' 카테고리의 다른 글
| [Flutter] 앱 이름 변경하기 (0) | 2025.10.11 |
|---|---|
| [Flutter] Kakao 로그인 구현하기 (0) | 2025.10.10 |
| [Flutter] Switch 위젯 No Material Widget Found 에러 (1) | 2023.05.07 |
| [Flutter] Flutter에서 KakaoMap API 활용하기 (1) | 2023.05.06 |
| [Flutter] 앱의 이름, ID, 아이콘 변경하기 (1) | 2023.05.06 |