Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Gradle and Android Studio
Search
Fede
September 25, 2014
Programming
130
0
Share
Gradle and Android Studio
Info and tips of Gradle and Android Studio
Fede
September 25, 2014
More Decks by Fede
See All by Fede
Spark Streaming Tips for Devs & Ops
fedefernandez
0
99
Scala on Android - The current state of affairs
fedefernandez
0
46
Functional Views on Android
fedefernandez
0
610
Other Decks in Programming
See All in Programming
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
200
ふつうのFeature Flag実践入門
irof
6
2.6k
横断組織出身のQAEがインプロセスQAEでつまずいたこと・活かせたこと
ty89
0
180
バックエンドにElysiaJSを採用して気付いた、良い点・悪い点
wanko_it
1
180
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
200
Moments When Things Go Wrong
aurimas
3
110
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
160
20260514_its_the_context_window_stupid.pdf
heita
0
1.1k
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
370
20260514 - build with ai 2026 - build LINE Bot with Gemini CLI
line_developers_tw
PRO
0
470
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
240
AI時代だからこそ「Bloc」を採用する価値があるのかもしれない
takuroabe
0
240
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
930
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
560
Leo the Paperboy
mayatellez
7
1.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Speed Design
sergeychernyshev
33
1.7k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Code Review Best Practice
trishagee
74
20k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
800
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
210
Transcript
Info and tips for Gradle and Android Studio
Google Plus plus.google.com/+FedeFdez Twitter @FedeProEx Web projectsexception.com
Eclipse / Ant Maven Gradle Android Build System
None
Single Build System Build from command line or your IDE
Default folder structure Tasks for build, test, install,...
Simplify AndroidManifest Version code and version name Package identifier Minimum
and target sdk Placeholder support
Build Types Debug, release and your owns Add application id
and name suffixes Signing Configurations Running proguard
Dependency Management Local packages Build type specific dependency No need
to distribute the dependencies Multi project support
None
1 android { 2 compileSdkVersion 19 3 buildToolsVersion '19.0.0' 4
5 defaultConfig { 6 applicationId 'com.example.app' 7 versionCode 12 8 versionName '2.0' 9 minSdkVersion 16 11 targetSdkVersion 16 12 } 13 } Simplify Manifest
1 android { 2 buildTypes { 3 debug { 4
applicationIdSuffix '.debug' 5 versionNameSuffix '-debug' 6 } 7 release { 8 runProguard true 9 proguardFiles 'file1.pro', 'file2.pro' 10 signingConfig signingConfigs.mySignConfig 11 } 12 } 13 } Build Types
1 android { 2 signingConfigs { 3 mySignConfig { 4
storeFile = file(project.property('file')) 5 storePassword = project.property('password') 6 keyAlias = project.property('keyAlias') 7 keyPassword = project.property('keyPassword') 8 // Command line or environment variable 9 // System.console().readLine("\n\$ Password: ") 10 // System.getenv("KEYSTORE") 11 } 12 } 13 } Signing Config
1 dependencies { 2 // All jar in libs folder
3 compile fileTree(dir: 'libs', include: ['*.jar']) 4 // Dependency from repository 5 compile 'com.android.support:support-v4:20.0.0' 6 // Library project in same folder 7 compile project(':library-project') 8 // Dependency for release build 9 releaseCompile 'com.google.code.gson:gson:2.3' 10 } Dependencies
None
Flavors Application variants Same type as the android.defaultConfig Flavor specific
dependencies Build Type + Product Flavor = Build Variant
Multi-Flavors Distinct dimensions Flavors are assigned to a specific dimension
Combine dimensions to create de app
1 flavorDimensions 'type', 'store' 2 productFlavors { 3 full {
4 flavorDimension 'type' 5 } 6 lite { 7 flavorDimension 'type' 8 } 9 amazon { 10 flavorDimension 'store' 11 } 12 play { 13 flavorDimension 'store' 14 } Flavors fullAmazonDebug fullAmazonRelease liteAmazonDebug liteAmazonRelease fullPlayDebug fullPlayRelease litePlayDebug litePlayRelease
Source Sets Build Types and Product Flavors have their own
sourceSet src/main, src/<buildType1>, src/<flavor1>,... Source code (src/*/java) generate a single output Manifests are all merged Resources using priority: BuildType > Flavor > Main
1 <manifest> 2 <application> 3 <activity> 4 <!-- --> 5
</activity> 6 </application> 7 </manifest> Manifest Merge 1 <manifest> 2 <uses-permission> 3 </manifest> 1 <manifest> 2 <uses-permission> 3 <application> 4 <activity> 5 <!-- --> 6 </activity> 7 </application> 8 </manifest> 1 2 3
Gradle + Android Studio
Android Studio vs Eclipse AS Eclipse Build system Gradle Ant
Maven-based build dependencies Yes No Build variants and multiple-APK generation Yes No Advanced Android code completion and refactoring Yes No Graphical layout editor Yes Yes APK signing and keystore management Yes Yes NDK support Soon Yes
Some Features An IDE built for Android Gradle integration IntelliJ
IDEA is the base for Android Studio Preview resources (drawables, strings,...) Advanced layout editor (includes, xml drawables) Templates
None
None
None
None
None
None
None
Resources tools.android.com/tech-docs/new-build-system/user-guide plus.google.com/+PhilippeBreault github.com/keyboardsurfer/idea-live-templates stackoverflow.com/questions/tagged/gradle+android
None