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
0
130
Gradle and Android Studio
Info and tips of Gradle and Android Studio
Fede
September 25, 2014
Tweet
Share
More Decks by Fede
See All by Fede
Spark Streaming Tips for Devs & Ops
fedefernandez
0
91
Scala on Android - The current state of affairs
fedefernandez
0
41
Functional Views on Android
fedefernandez
0
600
Other Decks in Programming
See All in Programming
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
150
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
190
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
5
7.2k
Claude Code + Container Use と Cursor で作る ローカル並列開発環境のススメ / ccc local dev
kaelaela
9
5k
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
170
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
120
Deep Dive into ~/.claude/projects
hiragram
14
2.5k
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
5
1.1k
Porting a visionOS App to Android XR
akkeylab
0
460
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
390
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
120
5つのアンチパターンから学ぶLT設計
narihara
1
170
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
49
14k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
Typedesign – Prime Four
hannesfritz
42
2.7k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Being A Developer After 40
akosma
90
590k
Navigating Team Friction
lara
187
15k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
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