New versions and changes so I can use studio 3

Build file updates and fixes. New versions so this project can be opened in studio preview. This will allow us to use the new profiler to find the memory leaks.
This commit is contained in:
maiatoday 2017-06-04 17:24:24 +02:00 committed by Phillip Thelen
parent d4068c632e
commit 3181ffe559
4 changed files with 328 additions and 343 deletions

View file

@ -1,303 +1,310 @@
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
apply plugin: 'io.fabric'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'com.noveogroup.android.check'
apply plugin: 'realm-android'
buildscript {
repositories {
mavenLocal()
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
jcenter()
}
dependencies {
classpath 'io.fabric.tools:gradle:1.21.6'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath('com.noveogroup.android:check:1.2.3') {
exclude module: 'checkstyle'
exclude module: 'pmd-java'
}
classpath 'com.puppycrawl.tools:checkstyle:7.5'
classpath 'net.sourceforge.pmd:pmd-java:5.5.3'
}
}
repositories {
mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
maven { url 'https://maven.fabric.io/public' }
// Material View Pager
maven { url "http://dl.bintray.com/florent37/maven" }
// Markdown
maven { url "https://s3.amazonaws.com/repo.commonsware.com" }
maven { url "https://jitpack.io" }
maven { url "https://maven.google.com" }
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
//Networking
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
//REST API handling
compile('com.squareup.retrofit2:retrofit:2.3.0') {
exclude module: 'okhttp'
}
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
//Crash Logging
releaseCompile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true;
}
// View Elements Binding :)
compile 'com.jakewharton:butterknife:8.8.1'
apt 'com.jakewharton:butterknife-compiler:8.8.1'
//Dependency Injection
compile 'com.google.dagger:dagger:2.11'
apt 'com.google.dagger:dagger-compiler:2.11'
provided 'org.glassfish:javax.annotation:10.0-b28'
//App Compatibility and Material Design
compile('com.mikepenz:materialdrawer:5.8.3@aar') {
transitive = true
}
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.android.support:preference-v14:26.1.0'
//QR Code
compile 'com.github.kenglxn.QRGen:android:2.2.0'
// Emojis
compile 'com.github.viirus:emoji-lib:0.0.5'
// Markdown
compile 'com.commonsware.cwac:anddown:0.4.0'
// About View for all dependent Libraries, we are using
compile('com.mikepenz:aboutlibraries:5.9.4@aar') {
transitive = true
}
// a better fab alternative
compile 'com.github.clans:fab:1.6.4'
//Eventbus
compile 'org.greenrobot:eventbus:3.0.0'
// IAP Handling / Verification
compile 'org.solovyev.android:checkout:1.0.1'
//Facebook
compile('com.facebook.android:facebook-android-sdk:4.19.0') {
transitive = true
}
compile 'fr.avianey.com.viewpagerindicator:library:2.4.1@aar'
// lodash/underscore
compile 'com.github.javadev:underscore:1.23'
//RxJava
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.3.2'
//Analytics
compile 'com.amplitude:android-sdk:2.14.1'
// Fresco Image Management Library
compile('com.facebook.fresco:fresco:1.5.0') {
exclude module: 'bolts-android'
}
compile('com.facebook.fresco:animated-gif:1.5.0') {
exclude module: 'bolts-android'
}
//Tests
testCompile 'junit:junit:4.10'
testCompile 'org.assertj:assertj-core:1.7.0'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
testCompile 'org.robolectric:robolectric:3.3.2'
testCompile 'org.robolectric:shadows-multidex:3.3.2'
testCompile 'org.robolectric:shadows-support-v4:3.3.2'
testCompile 'org.mockito:mockito-core:2.8.9'
testCompile 'org.powermock:powermock-api-mockito2:1.7.0'
testCompile 'org.powermock:powermock-module-junit4-rule-agent:1.7.0'
testCompile 'org.powermock:powermock-module-junit4-rule:1.7.0'
testCompile 'org.powermock:powermock-module-junit4:1.7.0'
//Leak Detection
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
//Push Notifications
compile 'com.google.firebase:firebase-core:11.4.0'
compile 'com.google.firebase:firebase-messaging:11.4.0'
compile 'com.google.android.gms:play-services-auth:11.4.0'
compile 'org.apmem.tools:layouts:1.10@aar'
compile 'com.roughike:bottom-bar:2.3.1'
compile 'io.realm:android-adapters:2.1.0'
compile(project(':seeds-sdk')) {
exclude group: 'com.google.android.gms'
exclude group: 'com.android.support', module: 'multidex'
}
}
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.habitrpg.android.habitica"
vectorDrawables.useSupportLibrary = true
buildConfigField "String", "STORE", "\"google\""
}
lintOptions {
abortOnError false
}
signingConfigs {
release
}
buildTypes {
debug {
applicationIdSuffix ".debug"
debuggable true
multiDexEnabled true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// Disable fabric build ID generation for debug builds
ext.enableCrashlytics = false
ext.alwaysUpdateBuildId = false
resValue "string", "content_provider", "com.habitrpg.android.habitica.debug.fileprovider"
resValue "string", "app_name", "Habitica Debug"
}
release {
signingConfig signingConfigs.release
debuggable false
multiDexEnabled false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
resValue "string", "content_provider", "com.habitrpg.android.habitica.fileprovider"
resValue "string", "app_name", "Habitica"
}
}
productFlavors {
dev {
minSdkVersion 21
}
prod {
}
amazon {
buildConfigField "String", "STORE", "\"amazon\""
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/java']
aidl.srcDirs = ['src/main/java']
renderscript.srcDirs = ['src/main/java']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
robolectric {
manifest.srcFile 'AndroidManifestTesting.xml'
java.srcDir file('src/test/java/')
res.srcDirs = ['res']
}
instrumentTest.setRoot('tests')
release { java.srcDirs = ['src/release/java'] }
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dexOptions {
preDexLibraries false
javaMaxHeapSize "6g" // Use gig increments depending on needs
}
lintOptions {
disable 'MissingTranslation','InvalidPackage'
enable 'LogConditional','IconExpectedSize','MissingRegistered','TypographyQuotes'
}
splits {
abi {
enable true
reset()
include 'armeabi-v7a', 'arm64-v8a', 'mips', 'x86', 'x86_64'
universalApk true
}
}
}
def Properties props = new Properties()
def propFile = new File('signingrelease.properties')
if (propFile.canRead()) {
props.load(new FileInputStream(propFile))
if (props != null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
} else {
println 'signing.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'signing.properties not found'
android.buildTypes.release.signingConfig = null
}
// Add Habitica Properties to buildConfigField
final File HRPG_PROPS_FILE = new File('habitica.properties')
if (HRPG_PROPS_FILE.canRead()) {
def Properties HRPG_PROPS = new Properties()
HRPG_PROPS.load(new FileInputStream(HRPG_PROPS_FILE))
if (HRPG_PROPS != null) {
android.buildTypes.all { buildType ->
HRPG_PROPS.any { property ->
buildType.buildConfigField "String", property.key, "\"${property.value}\""
}
}
} else {
throw new InvalidUserDataException('habitica.properties found but some entries are missing')
}
} else {
throw new MissingResourceException('habitica.properties not found')
}
// Add Habitica Resources to resources
final File HRPG_RES_FILE = new File('habitica.resources')
if (HRPG_RES_FILE.canRead()) {
def Properties HRPG_RES = new Properties()
HRPG_RES.load(new FileInputStream(HRPG_RES_FILE))
if (HRPG_RES != null) {
android.buildTypes.all { buildType ->
HRPG_RES.any { property ->
buildType.resValue "string", property.key, "\"${property.value}\""
}
}
} else {
throw new InvalidUserDataException('habitica.resources found but some entries are missing')
}
} else {
throw new MissingResourceException('habitica.resources not found')
}
tasks.whenTaskAdded { task ->
if (task.name == "lint") {
task.enabled = false
}
}
check { findbugs { skip true } }
apply plugin: 'com.android.application' //or apply plugin: 'java'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.noveogroup.android.check'
buildscript {
repositories {
mavenLocal()
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
jcenter()
}
dependencies {
classpath 'io.fabric.tools:gradle:1.22.1'
classpath('com.noveogroup.android:check:1.2.3') {
exclude module: 'checkstyle'
exclude module: 'pmd-java'
}
classpath 'com.puppycrawl.tools:checkstyle:7.5'
classpath 'net.sourceforge.pmd:pmd-java:5.5.3'
}
}
repositories {
mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
maven { url 'https://maven.fabric.io/public' }
// Material View Pager
maven { url "http://dl.bintray.com/florent37/maven" }
// Markdown
maven { url "https://s3.amazonaws.com/repo.commonsware.com" }
maven { url "https://jitpack.io" }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//Networking
implementation 'com.squareup.okhttp3:okhttp:3.7.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'
//REST API handling
implementation('com.squareup.retrofit2:retrofit:2.2.0') {
exclude module: 'okhttp'
}
implementation 'com.squareup.retrofit2:converter-gson:2.2.0'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.2.0'
//Crash Logging
releaseImplementation('com.crashlytics.sdk.android:crashlytics:2.6.6@aar') {
transitive = true
}
// View Elements Binding :)
implementation 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
//Dependency Injection
implementation 'com.google.dagger:dagger:2.10'
annotationProcessor 'com.google.dagger:dagger-compiler:2.10'
compileOnly 'org.glassfish:javax.annotation:10.0-b28'
//App Compatibility and Material Design
implementation('com.mikepenz:materialdrawer:5.8.3@aar') {
transitive = true
}
implementation 'com.android.support:appcompat-v7:25.3.1'
implementation 'com.android.support:design:25.3.1'
implementation 'com.android.support:recyclerview-v7:25.3.1'
implementation 'com.android.support:preference-v14:25.3.1'
implementation 'com.android.support:multidex:1.0.1'
//QR Code
implementation 'com.github.kenglxn.QRGen:android:2.2.0'
// Emojis
implementation 'com.github.viirus:emoji-lib:0.0.3.4'
// Markdown
implementation 'com.commonsware.cwac:anddown:0.3.0'
// About View for all dependent Libraries, we are using
implementation('com.mikepenz:aboutlibraries:5.9.4@aar') {
transitive = true
}
// a better fab alternative
implementation 'com.github.clans:fab:1.6.4'
// ORM
annotationProcessor 'com.raizlabs.android:DBFlow-Compiler:2.2.1'
implementation "com.raizlabs.android:DBFlow-Core:2.2.1"
implementation "com.raizlabs.android:DBFlow:2.2.1"
//Eventbus
implementation 'org.greenrobot:eventbus:3.0.0'
// IAP Handling / Verification
implementation 'org.solovyev.android:checkout:0.9.3@aar'
//Facebook
implementation('com.facebook.android:facebook-android-sdk:4.19.0') {
transitive = true
}
implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1@aar'
// lodash/underscore
implementation 'com.github.javadev:underscore:1.23'
//RxJava
implementation 'io.reactivex:rxandroid:1.2.1'
implementation 'io.reactivex:rxjava:1.2.0'
//Analytics
implementation 'com.amplitude:android-sdk:2.13.3'
// Fresco Image Management Library
implementation('com.facebook.fresco:fresco:1.3.0') {
exclude module: 'bolts-android'
}
implementation('com.facebook.fresco:animated-gif:1.3.0') {
exclude module: 'bolts-android'
}
//Tests
testImplementation "junit:junit:4.12"
testImplementation "org.assertj:assertj-core:1.7.0"
testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
testImplementation "org.robolectric:robolectric:3.2"
testImplementation 'org.robolectric:shadows-multidex:3.1'
testImplementation "org.robolectric:shadows-support-v4:3.1"
testImplementation "org.mockito:mockito-core:2.8.9"
//Leak Detection
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
//Push Notifications
implementation 'com.google.firebase:firebase-core:10.2.6'
implementation 'com.google.firebase:firebase-messaging:10.2.6'
implementation 'com.google.android.gms:play-services-auth:10.2.6'
implementation 'org.apmem.tools:layouts:1.10@aar'
implementation 'com.roughike:bottom-bar:2.2.0'
implementation(project(':seeds-sdk')) {
exclude group: 'com.google.android.gms'
exclude group: 'com.android.support', module: 'multidex'
}
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.habitrpg.android.habitica"
vectorDrawables.useSupportLibrary = true
buildConfigField "String", "STORE", "\"google\""
}
lintOptions {
abortOnError false
}
signingConfigs {
release
}
buildTypes {
debug {
applicationIdSuffix ".debug"
debuggable true
multiDexEnabled true
// Disable fabric build ID generation for debug builds
ext.enableCrashlytics = false
ext.alwaysUpdateBuildId = false
resValue "string", "content_provider", "com.habitrpg.android.habitica.debug.fileprovider"
resValue "string", "app_name", "Habitica Debug"
}
release {
signingConfig signingConfigs.release
debuggable false
multiDexEnabled true
resValue "string", "content_provider", "com.habitrpg.android.habitica.fileprovider"
resValue "string", "app_name", "Habitica"
}
}
flavorDimensions "default"
productFlavors {
dev {
}
prod {
}
amazon {
buildConfigField "String", "STORE", "\"amazon\""
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/java']
aidl.srcDirs = ['src/main/java']
renderscript.srcDirs = ['src/main/java']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
robolectric {
manifest.srcFile 'AndroidManifestTesting.xml'
java.srcDir file('src/test/java/')
res.srcDirs = ['res']
}
instrumentTest.setRoot('tests')
release { java.srcDirs = ['src/release/java'] }
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dexOptions {
preDexLibraries false
javaMaxHeapSize "6g" // Use gig increments depending on needs
}
lintOptions {
disable 'UnusedResources','MissingTranslation','UnusedAttribute','InvalidPackage'
enable 'LogConditional','IconExpectedSize','MissingRegistered','TypographyQuotes'
}
dataBinding {
enabled = true
}
}
Properties props = new Properties()
def propFile = new File('signingrelease.properties')
if (propFile.canRead()) {
props.load(new FileInputStream(propFile))
if (props != null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
} else {
println 'signing.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'signing.properties not found'
android.buildTypes.release.signingConfig = null
}
// Add Habitica Properties to buildConfigField
final File HRPG_PROPS_FILE = new File('habitica.properties')
if (HRPG_PROPS_FILE.canRead()) {
def Properties HRPG_PROPS = new Properties()
HRPG_PROPS.load(new FileInputStream(HRPG_PROPS_FILE))
if (HRPG_PROPS != null) {
android.buildTypes.all { buildType ->
HRPG_PROPS.any { property ->
buildType.buildConfigField "String", property.key, "\"${property.value}\""
}
}
} else {
throw new InvalidUserDataException('habitica.properties found but some entries are missing')
}
} else {
throw new MissingResourceException('habitica.properties not found')
}
// Add Habitica Resources to resources
final File HRPG_RES_FILE = new File('habitica.resources')
if (HRPG_RES_FILE.canRead()) {
def Properties HRPG_RES = new Properties()
HRPG_RES.load(new FileInputStream(HRPG_RES_FILE))
if (HRPG_RES != null) {
android.buildTypes.all { buildType ->
HRPG_RES.any { property ->
buildType.resValue "string", property.key, "\"${property.value}\""
}
}
} else {
throw new InvalidUserDataException('habitica.resources found but some entries are missing')
}
} else {
throw new MissingResourceException('habitica.resources not found')
}
tasks.whenTaskAdded { task ->
if (task.name == "lint") {
task.enabled = false
}
}
check { findbugs { skip true } }
apply plugin: 'com.android.application' //or apply plugin: 'java'
apply plugin: 'com.google.gms.google-services'

View file

@ -3,23 +3,17 @@
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.android.databinding:dataBinder:1.0-rc4'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
classpath 'com.google.gms:google-services:3.0.0'
classpath 'me.tatarka:gradle-retrolambda:3.3.1'
classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'
classpath "io.realm:realm-gradle-plugin:3.7.2"
}
// Exclude the version that the android plugin depends on.
configurations.classpath.exclude group: 'com.android.tools.external.lombok'
}
allprojects {
repositories {
jcenter()
google()
}
}

View file

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-milestone-2-all.zip

View file

@ -6,27 +6,10 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.novoda:bintray-release:0.3.4'
classpath 'com.novoda:bintray-release:0.5.0'
}
}
repositories {
mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
maven { url 'https://maven.fabric.io/public' }
// Material View Pager
maven { url "http://dl.bintray.com/florent37/maven" }
// Markdown
maven { url "https://s3.amazonaws.com/repo.commonsware.com" }
maven { url "https://jitpack.io" }
maven { url "https://maven.google.com" }
}
android {
compileSdkVersion 25
@ -62,18 +45,19 @@ android {
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'org.glassfish:javax.json:1.0.4'
compile 'com.google.android.gms:play-services:11.4.0'
compile 'com.google.code.gson:gson:2.7'
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'org.solovyev.android:checkout:0.9.1@aar'
androidTestCompile 'org.mockito:mockito-core:1.9.5'
androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.0'
testCompile 'junit:junit:4.12'
testCompile "org.robolectric:robolectric:3.0"
testCompile "org.robolectric:shadows-multidex:3.0"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'org.glassfish:javax.json:1.0.4'
implementation 'com.google.android.gms:play-services:10.2.6'
implementation 'com.google.code.gson:gson:2.8.0'
implementation 'com.android.support:multidex:1.0.1'
implementation 'com.loopj.android:android-async-http:1.4.9'
implementation 'org.solovyev.android:checkout:0.9.3@aar'
androidTestImplementation 'org.mockito:mockito-core:2.8.9'
androidTestImplementation 'com.google.dexmaker:dexmaker:1.2'
androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2'
testImplementation 'junit:junit:4.12'
testImplementation "org.robolectric:robolectric:3.2"
testImplementation "org.robolectric:shadows-multidex:3.1"
}
publish {