어제부터 더이상 Android Studio 2.4는 릴리즈하지 않는다. 대신 Android Studio 3.0
을 출시할 예정이다.
2가지 이유
이러한 변화로 규모를 확장하며 보다 빠른 Gradle 빌드 속도를 얻을 수 있다.
[Code]
- [Convert Java File to Kotlin File]
를 사용해 기존 Java 클래스를 Kotlin 코드로 변환데모 : 문자열 보간(string interpolation), 구조화되지 않은 선언(de-structuring declarations)
데모 : qauls, hashCode, toString 함수 처리
Show Kotlin Bytecode : 시작시 성능에 대한 우려가 있으면 현재 문장의 바이트 코드를 보여준다
Java 파일에서 실행되는 Android 링크 검사 (약 80개)는 모두 Kotlin 에서도 동일하게 적용된다.
tools:listitem="@layout_activity_item1"
과 디자인 관련 tools attributes
을 추가했지만 리스트뷰의 Preview는 끔찍했다. 디자인 관련 샘플 데이터 표시를 위해서 새롭게 Sample Resource Type
이 추가되었다.
tools:text="@tools:sample/lorem"
tools:text="@tools:sample/date_day_of_week"
문자열, icon 정의 등의 모델링을 가질 수 있다.
데모 영상 기준으로 샘플 데이터 위치는
app
폴더 하단에sampledata
폴더 하단에 샘플 리소스용 icon, json 파일이 위치
// activity.json
{
"activities": [
{
"icon": "@sample/activity_icons[ic_biking.png]",
"description": "Biking",
"location": "Pleasant Hill, CA",
"distance": "48 miles",
"date": "Yesterday"
},
...
]
}
샘플 리소스를 상용해 ItemLayout에 바인딩을 할 수 있다.
tools:src="@sample/activity.json/activities/icon"
tools:text="@sample/activity.json/activities/description"
코드 샘플의 완성은 앱 샘플 태그로 작동한다. JSON 파일과 다른 속성들을 연결할 수 있다. 결국 tools:listitem
를 사용한 곳에서는 실제 앱과 비슷한 모습을 확인할 수 있다.
작동방식은 텍스트 뷰 선택 → Layout Editor에서 fontFamily
선택 > 하단에 more fonts...
선택 > 사용 가능한 온라인 폰트를 고를 수 있다. Layout Preview에 선택한 폰트가 기대한대로 나타난다.
[New]
- [Image Asset]
을 통해서 foreground / background 레이어를 정의할 수 있다. 추가적으로 Show Safe Zones
, Show Grid
옵션도 있다.
파일 시스템의 파일을 실제로 탐색할 수 있다
feature modules 만들기 위한 새로운 도구가 있다. 그러나 인스턴트 앱을 만드는 가장 어려운 부분은 단일 앱(monolithic app)을 해체하는 것이다.
리팩터링을 위한 도구도 지원 예정이다.
[Modularize]
를 실행Load Proguard mappings...
로 매핑파일 연결하면 기존 심볼의 이름이 표시Find Usages
로 Proguard Code에서 사용법을 보여주어 보호/제거해야 할 대상을 식별할 수 있도록 돕는다[File]
- [Profile or Debug APK]
[Android Profiler] 탭으로 이용할 수 있다. CPU, 메모리, 네트워크에서 일어나는 일을 보여준다. 보라색 점들은 터치 이벤트이다. 그리고 하단 청녹색으로 Activity들의 활동을 볼 수 있다.
활성화 방법 : [Edit configuration settings]
- [Profiling]
- Enable advanced profiling
체크
프레임 차트
가 노출repositories{
maven {url 'https://maven.google.com' }
or
google() // 4.0-milestone-2 or later
}
maven.google.com
이고 Gradle 4.0 mileestone 2
로 시작하여 GOogle 바로 가기를 사용할 수 있다. URL을 기억할 필요가 없다Local
// 활성화 방법
--build-cache
org.gradle.caching=true
Distributed
Gradle Plugin 3.0 alpha1에는 많은 양의 캐시가 캐시되지 않는다.
Coe Reuse | Improved Caching |
API / Dependency Control | Compilation Avoidance |
더 자세한 내용은
Speeding Up Your Android Gradle Builds
세션에서 다룹니다.
Youtube Link : Speeding Up Your Android Gradle Builds
약 135 모듈, 220 종속성
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig.jackOptions.enabled true <-- deperecate
}
3.0 에서 완전히 제거되었다.
3.1 에서는 Java 7 로 class Bytecode 변환과 Transforms 작업의 위치가 변경되어 변환을 수행할 것이다. (Coming later (3.1?))
현재 앱과 라이브러리가 있는 경우 라이브러리는 항상 릴리즈 버전만 사용했다. 그래서 수동으로 설정했다 (debugCompile, releaseCompile) 하지만 flavors 를 사용하는 경우 잘 작동하지 않는다.
3.0 에서 컴파일 회피를 위해 더 복잡해진다. 라이브러리에 있는 것들은 두 가지 구성을 개시한다. ApiElements
, RuntimeElements
가 사용 되었다.
기본적으로 Configuration 같은 buildType 이나 flavor가 있으면 Gradle이 자동으로 맞춰준다.
android {
flavorSelection 'color', 'blue'
}
라이브러리에 flvor가 있고 앱에 대응하는 flavor가 없는 경우를 위해 새롭게 flavorSelection
이 추가되었다.
android {
flavorDimension 'something'
productFlavors {
flavor1 {}
flavor2 {}
}
}
3.0에서는 flavor 가 하나라도 flavorDimension
이 필수이다.
애플리케이션 모듈과 일부 라이브러리 모듈 중 일부를 인스턴드 앱의 기능으로 만들고 싶은 경우 가장 먼저 할 일은 플러그인이 아니라 라이브러리로 변경하는 것이다.
com.android.feature
모듈로 분리com.android.instantapp
) 을 작성Google Play Store
를 추가Android Emulator System Images
Google APIs | Google Play | Elevated Privileges | |
Android Open Source Project | X | X | O |
Google Play Edition | O | O | X |
Android Open Source Project 에서는 루트 접근 권한을 높여 운영 체제와 앱 모두 자유롭게 접근할 수 있다. Google Play Edition 가 의미하는 바는 시스템 이미지에 디지털 서명을 한다는 것이다. 그러면 루트 접근이 불가능해진다.
Elevated Privileges : 시스템 이미지 프로젝트 버전
에뮬레이터에서 버그 보고서와 스크린숏 등을 포함한 버그 레포트를 QA 팀 등에 전달할 수 있다
Google Play Console 또는 Firebase를 통해 앱에서 발생할 수 있는 증상 목록을 확인할 수 잇다.
comments powered by Disqus
Subscribe to this blog via RSS.
LazyColumn/Row에서 동일한 Key를 사용하면 크래시가 발생하는 이유
Posted on 30 Nov 2024