Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gradle and Android Studio

Fede
September 25, 2014

Gradle and Android Studio

Info and tips of Gradle and Android Studio

Fede

September 25, 2014
Tweet

More Decks by Fede

Other Decks in Programming

Transcript

  1. Single Build System Build from command line or your IDE

    Default folder structure Tasks for build, test, install,...
  2. Build Types Debug, release and your owns Add application id

    and name suffixes Signing Configurations Running proguard
  3. Dependency Management Local packages Build type specific dependency No need

    to distribute the dependencies Multi project support
  4. 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
  5. 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
  6. 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
  7. 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
  8. Flavors Application variants Same type as the android.defaultConfig Flavor specific

    dependencies Build Type + Product Flavor = Build Variant
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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