분류 전체보기
- Java Download 2024.03.13
- 그레이들 테스크 실행 2024.03.13
- 그레이들 Gradle 2024.03.13
- Gradle 2024.03.12
- build.gradle 문제 2024.03.12
- NDK, CMake 2024.03.12
- Mac에서 숨겨진 파일 표시 Finder에서 shift+command+. 2024.03.12
- Node.js 2024.03.12
- Firebase 파이어베이스 2024.03.12
- [flutter] 'runZoned' is deprecated and shouldn't be used. This will be removed in v9.0.0. Use Bloc.observer/Bloc.transformer instead 2024.03.11
Java Download
그레이들 테스크 실행
그레이들 래퍼 gradle wrapper는 그레이들을 실행할 때 사용자가 사전에 그레이들을 설치할 필요가 없게 하는 것이다.
유닉스에서는 gradlew, 윈도우에서는 gradlew.bat 스크립트며 프로젝트 루트 디렉터리에 위치한다.
w는 wrapper를 의미.
래퍼는 gradle-wrapper.jar와 gradle-wrapper.properties 파일로 이루어져있다. gradle/wrapper 디렉터리에서 찾을 수 있다.

Gradle-wrapper.properties

distuributionUrl 속성은 래퍼의 다운로드 버전이 8.4 임을 의미한다.
처음 실행한 후에 zipStoreBase아래 zipStorePath 디렉터리에 저장되고, 그 이후엔 저장된 캐시를 사용한다.
래퍼를 실행하는 방법은 명령창에서 ./gradlew를 실행하면 된다. 윈도우에선 gradlew.bat 를 실행한다.
'Android > Gadle' 카테고리의 다른 글
| Project 객체의 속성 (0) | 2024.03.13 |
|---|---|
| Gradle User Manual (0) | 2024.03.13 |
| Android Gradle plugin API reference (0) | 2024.03.13 |
| 그레이들 Gradle (0) | 2024.03.13 |
| Gradle (0) | 2024.03.12 |
그레이들 Gradle
Gradle 구조에 관한 내용.
전체 Gradle Scripts


Settings.gradle
안드로이드 프로젝트는 멀티 프로젝트 구조, settings.gradle 파일에 포함하는 하위 프로젝트(모듈)가 담겨져 있다.


settings.gradle 파일에 기본으로 생성되는 값으로, include 문장은 app 모듈을 포함한다.
안드로이드 라이브러리 프로젝트를 추가한다면 settings.gradle에 추가해야한다.
프로젝트 Build.gradle


프로젝트 build.gradle 파일의 buildscript 블록은 안드로이드 플러그인을 어디서 다운로드할지 지정한다.
프로젝트 build.gradle 파일의 buildscript 블록은 안드로이드 플러그인 버전을 지정한다.
App 모듈 Build.gradle

apply 문장은 안드로이드 플러그인 지정.
모듈 build.gradle 파일의 android 블록은 프로젝트의 세부 내용을 정의한다.
android블록의 compileSdk 항목은 컴파일 SDK 버전
android블록의 defaultConfig 블록에 몇가지 속성을 지정할 수 있다.
applicationId
애플리케이션의 패키지 이름을 정의. 구글 플레이 스토어에서 유일한 이름으로 구별되어야 하고, 한번 마켓에 올라가면 이 값은 변경되어서는 안됨. 값을 변경하게 되면 전혀 다른 애플리케이션이 되어 기존 사용자가 동일한 이름으로 최선 버전을 검색할 수 없음. gradle로 넘어가기 전에는 AndroidManifest.xml 파일의 package 속셍에 정의했지만, 이제 두 값은 서로 달라도 된다. 우선 순위는 AndroidId가 더 높다.
minSdk
지원하는 최소 SDK 버전. SDK가 이 값보다 낮은 기기에서는 해당 애플리케이션을 검색할 수 없다. gradle로 넘어가기 전에는 AndroidManifest.xml 파일에 uses-sdk 태그 속성으로 정의 했지만, 이러한 방식은 이제 지원하지 않으며 gradle 의 빌드 속성값으로 대체 되어 있다.
targetSdk
애플리케이션에서 의도하는 목적 SDK 버전. Android Studio에서는 이 값이 Android 최신 버전보다 낮으면 경고를 표시하며, 원하는 버전을 지정하면 된다.
versionCode
애플리케이션의 버전을 나타내는 정수 값. 업그레이드의 기준으로 사용한다.
VersionName
사용자에게 배포되는 애플리케이션 버전을 나타내는 문자열. 보통 <Major>.<Minor>.<Version> 형식이다.
ComplieOptions 블록은 이 애플리케이션이 JDK 1.8을 사용하고 있음을 알려준다.
Android Studio의 Project Structure 에서 실행하면 다음과 같이 속성값이 보인다.


모듈 build.gradle의 dependencies 블록에 라이브러리의 그룹, 이름, 버전을 지정해서 안드로이드 애플리케이션에 외부 라이브러리를 추가할 수 있다.
외부 라이브러리 명시할 때 configuration도 함께 입력.
compile, runtime, testCompile 등이 있다.
메이븐 저장소에 있는 라이브러리 그룹, 이름, 버전을 명시할 때 사용하는 문법
configuration명 '[그룹]:[이름]:[버전]'
예시
testCompile 'junit:junit:4.12'
메이븐 저장소가 아니라 로컬 파일 시스템에 있는 파일을 참조하려면 file이나 fileTree 문법을 사용한다
dependencies {
compile files('libs/a.jar', 'libs/b.jar')
compile fileTree(dir: 'libs', include: '*.jar')
}
저장소 설정
모듈 build.gradle에 있는 repositories 블록에 외부 라이브버리 의존성을 확인하는 저장소를 설정할 수 있다.
'Android > Gadle' 카테고리의 다른 글
| Project 객체의 속성 (0) | 2024.03.13 |
|---|---|
| Gradle User Manual (0) | 2024.03.13 |
| Android Gradle plugin API reference (0) | 2024.03.13 |
| 그레이들 테스크 실행 (0) | 2024.03.13 |
| Gradle (0) | 2024.03.12 |
Gradle
'Android > Gadle' 카테고리의 다른 글
| Project 객체의 속성 (0) | 2024.03.13 |
|---|---|
| Gradle User Manual (0) | 2024.03.13 |
| Android Gradle plugin API reference (0) | 2024.03.13 |
| 그레이들 테스크 실행 (0) | 2024.03.13 |
| 그레이들 Gradle (0) | 2024.03.13 |
build.gradle 문제
NDK, CMake
Mac에서 숨겨진 파일 표시 Finder에서 shift+command+.
Node.js
Firebase 파이어베이스
[flutter] 'runZoned' is deprecated and shouldn't be used. This will be removed in v9.0.0. Use Bloc.observer/Bloc.transformer instead
아직 버전업 전이라 실행은 되는데 수정하라고 나온다.
void main() {
BlocOverrides.runZoned(() {
runApp(MyApp());
},
blocObserver: MyBlockObserver());
}
문서대로 수정해줬다.
void main() {
Bloc.observer = MyBlockObserver();
runApp(MyApp());
}
여담이지만 예전엔 구글링으로 이런거 다 찾아보고 그래서 이렇게 작성했던 글들이 걸려서 검색되고 그랬는데,
이제 개발자들이 ChatGPT에서 바로 물어보고 응답되는 시대라서 이렇게 올린 글들이 점점 의미가 없어질거 같다.
사실 내가 올린건 공식 문서에 있는거라 사실 팁도 아니긴하다.
그래도 요즘 시대엔 뭔가 이런 사소한 노력들이 남들에게 도움되기 보다는 그냥 개인적인 정리용 밖에 안될 거 같다.