Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
3ce1f8b
Update to latest wrapper, add Android repositories, Xmx8G
jjohannes Dec 2, 2016
625b52e
Use minSdkVersion 21 for fast, native multi-dex
oehme Dec 8, 2016
aa8a4bf
Update wrapper, dependencies, Xmx8G
jjohannes Dec 9, 2016
ecbff9d
Task for adding sources to project
jjohannes Dec 12, 2016
f42dd2d
Add example sources
jjohannes Dec 12, 2016
332b441
Add template for source files
jjohannes Dec 12, 2016
859386f
Adjust path to example
jjohannes Dec 12, 2016
034f6d0
Update Android plugin version
jjohannes Dec 13, 2016
1003cfa
Increase minSdkVersion for better performance
oehme Dec 13, 2016
c655ce8
Add Gradle profiler and a first scenario
oehme Dec 13, 2016
651a2e4
Add profiler usage to README
oehme Dec 13, 2016
95bc78d
Fix tasks of first scenario
oehme Dec 13, 2016
8031eda
Upgrade auto value to work around https://github.com/google/auto/issu…
oehme Dec 13, 2016
e7d8107
Remove usage of auto-value annotation processor
eskatos Dec 13, 2016
0ece3fd
Add incremental change scenario
oehme Dec 13, 2016
248f0d4
Allow profiling scenarios
oehme Dec 13, 2016
066c4c1
Replace com.neenbedankt.android-apt with GPA’s annotation processing
jjohannes Dec 13, 2016
d8fe1c9
Add more profiling scenarios
oehme Dec 13, 2016
e04f237
Update readme
oehme Dec 13, 2016
3b90ad2
Remove usage of dagger annotation processor
eskatos Dec 13, 2016
fdcd3ce
Update usage instructions for profile
oehme Dec 13, 2016
0408c80
Remove annotation processor usage
jjohannes Dec 14, 2016
7e78852
Change scenarios to assemble only one variant of one app
jjohannes Dec 14, 2016
898244b
Activate incremental java compile
jjohannes Dec 14, 2016
69fb0f0
Raise max workers, add full assemble scenarios
oehme Dec 14, 2016
fc36681
Add androidManifestChange scenario
eskatos Dec 14, 2016
fcd4073
Add scenario for class path resource change
ghale Dec 14, 2016
b58d20e
Add scenario for android resource change
ghale Dec 14, 2016
216fa55
Merge branch 'gradle-with-sources' into gradle
oehme Dec 15, 2016
2cc22ba
Reset version to latest Android release
oehme Dec 15, 2016
d6fad05
Revert "Remove annotation processor usage"
oehme Dec 15, 2016
0eb21ae
Remove all annoatation processor usage until APT is fixed
oehme Dec 15, 2016
0a43eeb
Remove view binding that buck can't handle
oehme Dec 15, 2016
b9bb88e
Merge remote-tracking branch 'upstream/master' into gradle
oehme Dec 16, 2016
fef0149
Merge remote-tracking branch 'upstream/master' into gradle
oehme Dec 16, 2016
758f2a4
Exclude transitive Android dependency
oehme Dec 16, 2016
78abeb5
Merge branch 'gradle-with-sources' of github.com:gradle/perf-android-…
oehme Dec 16, 2016
5baf405
Add annotation processors back in
oehme Dec 16, 2016
99fd937
Merge branch 'gradle-with-sources' into gradle
oehme Dec 16, 2016
967f1aa
Remove duplicate dependency
oehme Dec 16, 2016
9e73658
Use 6G of RAM for in-process dexing
oehme Dec 16, 2016
0b42625
Reduce memory usage for dexing
oehme Dec 16, 2016
94fdcb8
Remove generated sources
oehme Dec 16, 2016
7d08a2b
Remove unused plugin from template
oehme Dec 16, 2016
9ae9517
Don't profile the 'clean' task
oehme Dec 17, 2016
a775537
Merge remote-tracking branch 'upstream/master' into gradle
oehme Dec 19, 2016
45a3c2b
Don't resolve dependencies at configuration time
oehme Dec 19, 2016
7dcb9d7
Merge remote-tracking branch 'upstream/master' into gradle
oehme Dec 20, 2016
cbf8601
Use configure on demand
oehme Dec 20, 2016
4af5446
Add instant run scenario
oehme Jan 5, 2017
c1dc509
Add non abi and resource value change scenarios
oehme Jan 5, 2017
c4d56f8
Add missing app.properties for classpathResourceChange scenario
eskatos Jan 6, 2017
6eabecb
Added Buck build instructions to performance scenarios
adammurdoch Dec 26, 2016
7e7f3e2
Added buck build instructions for some more scenarios
adammurdoch Jan 6, 2017
a944f3a
Added a source file and resource file to all projects, including Java…
adammurdoch Dec 26, 2016
aeeb216
removed duplicate source file
adammurdoch Jan 6, 2017
4efe1e8
Don't generate duplicate Java source files
adammurdoch Dec 26, 2016
226a3d7
added check during configuration to verify that $ANDROID_HOME is set,…
adammurdoch Jan 6, 2017
8fb61dd
Upgrade Gradle and Android version
oehme Jan 27, 2017
f5df090
Merge remote-tracking branch 'upstream/master' into gradle
oehme Feb 2, 2017
586d95b
Upgrade to latest Android RC
oehme Feb 23, 2017
996abcd
Use incremental dexing
oehme Feb 23, 2017
7364550
Upgrade to latest Android 2.3.0 final
jjohannes Mar 8, 2017
bc25c9f
Fix Buck
oehme Mar 22, 2017
bc60ade
Add references to dependency projects
oehme Mar 28, 2017
99b2629
Remove references to JCenter
cobexer Jul 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .buckjavaargs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
-Xmx4g
-Xmx8g
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ gradle-user-home
**/src/
!**/src/*/AndroidManifest.xml
!gradle/SourceTemplate/app/src
!gradle/SourceTemplate/java-lib/src
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ Also provides an alternative build path using [Buck](https://buckbuild.com/) to

[![Master branch build status](https://travis-ci.org/kageiit/android-studio-gradle-test.svg?branch=master)](https://travis-ci.org/kageiit/android-studio-gradle-test)

## Setup

Run `./gradlew addSources` to generate source code for all subprojects.

## To build all apps with gradle:
```bash
./buildWithGradle
Expand Down
111 changes: 70 additions & 41 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
buildscript {
repositories {
maven {
url "https://repo.gradle.org/gradle/libs/"
content {
includeModule "com.uber", "okbuck"
includeModule "com.google.android.exoplayer", "exoplayer"
includeModule "com.lovedise", "permissiongen"
}
}
mavenLocal()
jcenter()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:2.3.0-beta3'
classpath 'com.android.tools.build:gradle:2.3.0'
classpath ('com.uber:okbuck:0.16.3') {
exclude module: 'gradle'
}
Expand All @@ -15,10 +23,23 @@ buildscript {
allprojects {
project -> project.apply from: rootProject.file('dependencies.gradle')
repositories {
jcenter()
maven {
url "https://repo.gradle.org/gradle/libs/"
content {
includeModule "com.google.android.exoplayer", "exoplayer"
includeModule "com.meetic.shuffle", "shuffle"
includeModule "com.meetic.dragueur", "dragueur"
includeModule "com.futuremind.recyclerfastscroll", "fastscroll"
includeModule "com.lovedise", "permissiongen"
}
}
mavenCentral()
}

def androidHome = System.getenv("ANDROID_HOME")
if (!androidHome) {
throw new IllegalArgumentException("ANDROID_HOME environment variable is not set.")
}
repositories {
maven {
url "$androidHome/extras/android/m2repository/"
Expand Down Expand Up @@ -47,14 +68,18 @@ subprojects { project ->
if (it.name.contains("Test")) {
resolutionStrategy {
force 'io.reactivex:rxandroid:1.2.1'
force 'com.android.support:appcompat-v7:24.2.1'
force 'com.android.support:recyclerview-v7:24.2.1'
force 'com.android.support:animated-vector-drawable:24.2.1'
force 'com.android.support:support-v4:24.2.1'
force 'com.squareup.okio:okio:1.8.0'
force 'io.reactivex:rxjava:1.1.8'
force 'com.google.auto:auto-common:0.6'
force 'com.android.support:appcompat-v7:25.1.0'
force 'com.android.support:recyclerview-v7:25.1.0'
force 'com.android.support:animated-vector-drawable:25.1.0'
force 'com.android.support:support-v4:25.1.0'
}
}
resolutionStrategy {
force 'com.google.guava:guava:19.0'
force 'com.google.auto:auto-common:0.6'
}
}

Expand Down Expand Up @@ -165,6 +190,7 @@ task addSources {
println "Adding sources to: " + sourceFolder
copy {
from fileTree(new File(project.rootDir, "gradle/SourceTemplate/app/src/")).exclude("main/AndroidManifest.xml")
from fileTree(new File(project.rootDir, "gradle/SourceTemplate/java-lib/src/"))
into sourceFolder
}

Expand All @@ -176,10 +202,21 @@ task addSources {
}

adjustPackage(it, "LoginActivity")
addReferencesToOtherClasses(it, "LoginActivity")
adjustPackage(it, "Thing")
if (hasAutoService) {
adjustPackage(it, "Service")
}
}
if (it.plugins.hasPlugin('java')) {
def sourceFolder = new File(it.projectDir, 'src')
println "Adding sources to: " + sourceFolder
copy {
from fileTree(new File(project.rootDir, "gradle/SourceTemplate/java-lib/src/"))
into sourceFolder
}
adjustPackage(it, "Thing", "gradle.example.${it.name}")
}
}
}
}
Expand All @@ -189,46 +226,38 @@ boolean hasDependency(Project project, String name) {
}

def adjustPackage(Project project, String className) {
def sourceFolder = new File(project.projectDir, 'src')
def sourceFile = new File(sourceFolder, "main/java/gradle/example/${className}.java")
def manifest = new File(sourceFolder, "main/AndroidManifest.xml").text
def projectPackage = manifest.substring(manifest.indexOf('package="') + 9, manifest.indexOf('" xmlns:android'))
def projectPackage = getProjectPackage(project)
adjustPackage(project, className, projectPackage)
}

def getProjectPackage(Project project) {
if (project.plugins.hasPlugin('com.android.application') || project.plugins.hasPlugin('com.android.library')) {
"com.studio.${project.name}"
} else {
"gradle.example.${project.name}"
}
}

def exampleClassFolder = new File(sourceFolder, "main/java/${projectPackage.replace('.', '/')}")
def adjustPackage(Project project, String className, String projectPackage) {
def sourceFolder = new File(project.projectDir, 'src/main/java')
def sourceFile = new File(sourceFolder, "gradle/example/${className}.java")

def exampleClassFolder = new File(sourceFolder, "${projectPackage.replace('.', '/')}")
exampleClassFolder.mkdirs()

sourceFile.text = sourceFile.text.replaceAll("package gradle.example;", "package ${projectPackage};")
sourceFile.renameTo(new File(exampleClassFolder, "${className}.java"))
}

// Prevents resolving any configurations during evaluation
class ConfigurationNullifierListener implements DependencyResolutionListener {

private final Project root
def addReferencesToOtherClasses(Project project, String className) {
def sourceFolder = new File(project.projectDir, 'src/main/java')
def projectPackage = getProjectPackage(project)
def sourceFile = new File(sourceFolder, "${projectPackage.replace('.', '/')}/${className}.java")
def dependencyProjects = project.configurations.compile.allDependencies.withType(ProjectDependency).collect { it.dependencyProject}.toSet()
def fieldDeclarations = dependencyProjects.collect { "private ${getProjectPackage(it)}.Thing ${it.name}Thing;"}

ConfigurationNullifierListener(Project root) {
this.root = root
}

void beforeResolve(ResolvableDependencies dependencies) {
String name = dependencies.name
String path = dependencies.path
String projectPath = path.substring(0, path.lastIndexOf(":"))
Project p = root.project(projectPath)
try {
Configuration config = p.configurations.getByName(name)
config.dependencies.clear()
config.extendsFrom = []
} catch(Exception ignored) { }
}

void afterResolve(ResolvableDependencies dependencies) { }
}

if (System.getProperty("okbuck.wrapper", "false") == "true") {
final ConfigurationNullifierListener configurationNullifierListener = new ConfigurationNullifierListener(project)
gradle.addListener(configurationNullifierListener)
gradle.projectsEvaluated {
gradle.removeListener(configurationNullifierListener)
}
sourceFile.text = sourceFile.text.replace("private View mLoginFormView;", """
private View mLoginFormView;
${fieldDeclarations.join('\n')}
""")
}
4 changes: 2 additions & 2 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def android = [

def annotationProcessor = [
androidApi : 'com.google.android:android:4.1.1.4',
autoCommon : 'com.google.auto:auto-common:0.4',
autoCommon : 'com.google.auto:auto-common:0.6',
autoService : 'com.google.auto.service:auto-service:1.0-rc2',
autoValue : 'com.google.auto.value:auto-value:1.4-rc1',
autoValueAnnotations: 'com.jakewharton.auto.value:auto-value-annotations:1.2-update1',
Expand Down Expand Up @@ -162,7 +162,7 @@ def other = [
rxrelay : 'com.jakewharton.rxrelay:rxrelay:1.1.0',
shuffle : 'com.meetic.shuffle:shuffle:1.0.8',
androidApi : 'com.google.android:android:4.1.1.4',
autoCommon : 'com.google.auto:auto-common:0.4',
autoCommon : 'com.google.auto:auto-common:0.6',
autoService : 'com.google.auto.service:auto-service:1.0-rc2',
autoValueGson : 'com.ryanharter.auto.value:auto-value-gson:0.3.2-rc1',
autoValueParcel : 'com.ryanharter.auto.value:auto-value-parcel-adapter:0.2.3-rc2',
Expand Down
2 changes: 2 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ versionPatch=0

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.workers.max=16
org.gradle.jvmargs=-Xmx4G
android.useDexArchive=true
20 changes: 20 additions & 0 deletions gradle/SourceTemplate/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
}
}

allprojects {
repositories {
mavenCentral()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}
2 changes: 2 additions & 0 deletions gradle/SourceTemplate/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
org.gradle.jvmargs=-Xmx1536m

Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#Mon Dec 28 10:00:20 PST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
Loading