diff --git a/ChangeLog.md b/ChangeLog.md index e085513d2..766fd5493 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -11,6 +11,22 @@ This project's release branch is `master`. This log is written from the perspect * beam-postgres to 0.5.0.0 * New pins * [beam-automigrate](https://github.com/obsidiansystems/beam-automigrate) 0.1.0.0 +* Android + * Add allowBackup/fullBackupContent to manifest + * Bump gradle to v3.4.0 and upgrade related maven dependencies + * Allow maven dependencies to be overridden + * Copy google-services.json to the location expected by google integrations + * Disable multi-dex on android builds (see [note](https://github.com/reflex-frp/reflex-platform/commit/0e3e94467ab117832989632d65cfcc9afd538809)) + * Update to android sdk version 29 +* iOS + * Copy default splash screen images and app icon into sample application + * Make ios-deploy tool overridable + * Update iosSdkVersion to 13.2 + * Make xcode version customizable + * Remove ResourceRules.plist as it is no longer necessary + * Set CFBundleIconName as required by App Store + * Add portable-deploy script for iOS for creating a pre-signed tarball which can be tested without Nix. + * Add iOS Simulator target ## v0.6.1.0 diff --git a/android/AndroidManifest.xml.nix b/android/AndroidManifest.xml.nix index 2122ee8a2..cf915b7d8 100644 --- a/android/AndroidManifest.xml.nix +++ b/android/AndroidManifest.xml.nix @@ -5,8 +5,13 @@ , intentFilters , services , permissions +, allowBackup ? false +, fullBackupContent ? allowBackup +, usesCleartextTraffic ? false }: -'' +let + boolStr = x: if x then "true" else "false"; +in '' + android:allowBackup="${boolStr allowBackup}" + android:fullBackupContent="${boolStr fullBackupContent}" + android:hardwareAccelerated="true" + android:usesCleartextTraffic="${boolStr usesCleartextTraffic}"> > gradle.properties ''} buildDir=`pwd` - cp -r $ANDROID_HOME $buildDir/local_sdk + cp -rL $ANDROID_HOME $buildDir/local_sdk chmod -R 755 local_sdk export ANDROID_HOME=$buildDir/local_sdk/android-sdk # Key files cannot be stored in the user's home directory. This @@ -88,7 +95,7 @@ stdenv.mkDerivation ({ chmod -R 755 .m2 mkdir -p .m2/repository/com/android/support cp -RL local_sdk/android-sdk/extras/android/m2repository/com/android/support/* .m2/repository/com/android/support/ - gradle ${gradleTask} --offline --no-daemon -g ./tmp -Dmaven.repo.local=`pwd`/.m2/repository + gradle ${gradleTask} --offline --no-daemon -g ./tmp -Dmaven.repo.local=$(pwd)/.m2/repository ''; installPhase = '' diff --git a/android/build.gradle.nix b/android/build.gradle.nix index ad7774135..dfaff147d 100644 --- a/android/build.gradle.nix +++ b/android/build.gradle.nix @@ -12,20 +12,30 @@ buildscript { mavenLocal() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.0' + classpath 'com.android.tools.build:gradle:3.4.2' + classpath 'com.android.tools.lint:lint:26.4.2' ${googleServicesClasspath} } } +task proguard(type: proguard.gradle.ProGuardTask) { + configuration 'proguard.txt' + + // injars 'build/libs/proguard-gradle-example.jar' + // outjars 'build/libs/proguard-gradle-example.out.jar' + +} + allprojects { repositories { mavenLocal() } } + apply plugin: 'com.android.application' android { - compileSdkVersion 28 + compileSdkVersion 29 buildToolsVersion '28.0.3' sourceSets { @@ -40,9 +50,10 @@ android { defaultConfig { applicationId "${applicationId}" minSdkVersion 21 - targetSdkVersion 28 + targetSdkVersion 29 versionCode ${version.code} versionName "${version.name}" + multiDexEnabled false } ${if releaseKey == null then "" else '' @@ -58,15 +69,17 @@ android { } buildTypes { - release { - minifyEnabled false - zipAlignEnabled true - ${if releaseKey == null then "" else '' - signingConfig signingConfigs.release - ''} - } + release { + minifyEnabled false + useProguard false + zipAlignEnabled true + ${if releaseKey == null then "" else '' + signingConfig signingConfigs.release + ''} + } debug { minifyEnabled false + useProguard false debuggable true } } @@ -107,7 +120,9 @@ android.applicationVariants.all { variant -> } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.google.firebase:firebase-iid:20.2.3' + implementation 'com.google.firebase:firebase-messaging:20.2.3' ${additionalDependencies} } diff --git a/android/default.nix b/android/default.nix index 8b31a733d..f09b6cfa8 100644 --- a/android/default.nix +++ b/android/default.nix @@ -94,6 +94,8 @@ in rec { , googleServicesJson ? null + , mavenDeps ? import ./defaults/deps.nix + , additionalDependencies ? "" , runtimeSharedLibs ? (_: []) @@ -114,6 +116,11 @@ in rec { # Set this to false to build one APK per target platform. This will # automatically transform the version code to 1000 * versionCode + offset # where "offset" is a per-platform constant. + + , usesCleartextTraffic ? false + + # Can be "assembleRelease", "assembleDebug", or "bundleRelease" + , gradleTask ? (if isRelease then "assembleRelease" else "assembleDebug") }: assert builtins.match "^([A-Za-z][A-Za-z0-9_]*\\.)*[A-Za-z][A-Za-z0-9_]*$" applicationId != null; nixpkgs.lib.makeOverridable impl.buildApp { @@ -124,7 +131,6 @@ in rec { displayName version releaseKey - isRelease resources assets iconPath @@ -136,6 +142,9 @@ in rec { additionalDependencies runtimeSharedLibs javaSources - universalApk; + universalApk + mavenDeps + usesCleartextTraffic + gradleTask; }; } diff --git a/android/defaults/deps.nix b/android/defaults/deps.nix index 6cf8bc088..6e41c8208 100644 --- a/android/defaults/deps.nix +++ b/android/defaults/deps.nix @@ -1,178 +1,418 @@ [ - { artifactId = "baseLibrary"; - groupId = "com.android.databinding"; - version = "3.1.0"; + { artifactId = "annotation"; + groupId = "androidx.annotation"; + version = "1.0.0"; repo = "https://maven.google.com/"; - jarSha256 = "788dd6aa22a49fecd1d7125b717c46103025bb647f9b50b6cb70f58e0962884d"; - pomSha256 = "79d0d2111187b8af3ad3635d815595f7b50c49685463784fe6bd7c3f897358e3"; + jarSha256 = "0baae9755f7caf52aa80cd04324b91ba93af55d4d1d17dcc9a7b53d99ef7c016"; + pomSha256 = "a179c12db43d9c0300c9db63f4811db496504be5401b951d422b78490ad1e5b4"; aarSha256 = null; } - { artifactId = "compilerCommon"; - groupId = "com.android.databinding"; - version = "3.1.0"; + { artifactId = "annotation"; + groupId = "androidx.annotation"; + version = "1.1.0"; repo = "https://maven.google.com/"; - jarSha256 = "5c7d7b188eb06a074a0c7131fc5a22cd9f3fc2cd5810ec32222d18cffdf8144f"; - pomSha256 = "cbe7dab110aa887f6d7ae1ed209eb679e1334a154f1f02b8a92a693fea6299a0"; + jarSha256 = "d38d63edb30f1467818d50aaf05f8a692dea8b31392a049bfa991b159ad5b692"; + pomSha256 = "2e9372ba7780ef44952adbf86b66e1f08682c1e5277c926185f6564a13799efe"; aarSha256 = null; } - { artifactId = "annotations"; - groupId = "com.android.tools"; - version = "24.5.0"; - repo = "https://jcenter.bintray.com/"; - jarSha256 = "29fbaf8e9ee7cbdbbf3e23c2955c04bb752d835d2c4c90936e89e023517dd922"; - pomSha256 = "c3c99bf58182889fe86315e9a01473ee2c95540b9dedef898cec64554d925c54"; + { artifactId = "core-common"; + groupId = "androidx.arch.core"; + version = "2.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = "4b80b337779b526e64b0ee0ca9e0df43b808344d145f8e9b1c42a134dac57ad8"; + pomSha256 = "4b6f1d459ddd146b4e85ed6d46e86eb8c2639c5de47904e6db4d698721334220"; + aarSha256 = null; } + + { artifactId = "core-runtime"; + groupId = "androidx.arch.core"; + version = "2.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "e2007d41ddc69ee2a77fed7b5c1dc5a41e01122926ba59696aab7b18d2264411"; + aarSha256 = "87e65fc767c712b437649c7cee2431ebb4bed6daef82e501d4125b3ed3f65f8e"; } + + { artifactId = "asynclayoutinflater"; + groupId = "androidx.asynclayoutinflater"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "48167eeedc8da79c4d29deaf0d0cd9b5d8fedcae01f1a6efb3f28f08e8982f71"; + aarSha256 = "f7eab60c57addd94bb06275832fe7600611beaaae1a1ec597c231956faf96c8b"; } + + { artifactId = "collection"; + groupId = "androidx.collection"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = "9c8d117b5c2bc120a1cdfeb857e05b495b16c36013570372a708f7827e3ac9f9"; + pomSha256 = "a7913a5275ad68e555d2612ebe8c14c367b153e14ca48a1872a64899020e54ef"; + aarSha256 = null; } + + { artifactId = "coordinatorlayout"; + groupId = "androidx.coordinatorlayout"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "3e44e4de2fee6debc33d23626ee906e54e1bb3c1749b19e02bb667b614ab9392"; + aarSha256 = "e508c695489493374d942bf7b4ee02abf7571d25aac4c622e57d6cd5cd29eb73"; } + + { artifactId = "core"; + groupId = "androidx.core"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "384d529ad668ada4808de29b29a6348f0007c2841ad79cae9a5a089bd68810f5"; + aarSha256 = "d7672358fc0d46de678968bcddfd3bdfe1618574299a753477b16116cfec74f5"; } + + { artifactId = "cursoradapter"; + groupId = "androidx.cursoradapter"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "62d95c89850af21030b19f14d5f7ecd6d8bcc9a3014c59002ec99624caac8100"; + aarSha256 = "a81c8fe78815fa47df5b749deb52727ad11f9397da58b16017f4eb2c11e28564"; } + + { artifactId = "customview"; + groupId = "androidx.customview"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "ce9e47b87184f5bd5e139e9becd5b26476d42d78c31bf2fdedc37acb41b9ad49"; + aarSha256 = "20e5b8f6526a34595a604f56718da81167c0b40a7a94a57daa355663f2594df2"; } + + { artifactId = "databinding-common"; + groupId = "androidx.databinding"; + version = "3.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "52886c0ef6cfa492d07b40c3952201d6d2f0cfc680144fbefc69d2d5cb786c25"; + pomSha256 = "fb5c804e2d81186e9e63e45b7e97eec54aa6f5d502b763abfbb0c57b62b86b4c"; + aarSha256 = null; } + + { artifactId = "databinding-compiler-common"; + groupId = "androidx.databinding"; + version = "3.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "770b6a82da0684f93d037ed5d241248cb25862ed14ecd7d9ec8c756153266051"; + pomSha256 = "6082c0a366fac7506c65d276ecbb25b3a053428a4c1f534cd2568c1f12f23e52"; + aarSha256 = null; } + + { artifactId = "documentfile"; + groupId = "androidx.documentfile"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "013288a9317a552706ce625fb24493e8223288529223ec578cf855a5ae9c16e5"; + aarSha256 = "865a061ef2fad16522f8433536b8d47208c46ff7c7745197dfa1eeb481869487"; } + + { artifactId = "drawerlayout"; + groupId = "androidx.drawerlayout"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "da6733425a83f5ce850878fa7201082345fed7c668dd58550fdd19c0396c6fa4"; + aarSha256 = "9402442cdc5a43cf62fb14f8cf98c63342d4d9d9b805c8033c6cf7e802749ac1"; } + + { artifactId = "fragment"; + groupId = "androidx.fragment"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "e329d673361e94d2e8f4d4d14e1f0586368bd43fb19efd5766ce7498bcccd162"; + aarSha256 = "65dd32d71fe65a32e77989a6cfb1ad09307038927f82a740c7611162d0b518f8"; } + + { artifactId = "interpolator"; + groupId = "androidx.interpolator"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "0ddc07cc39699f48ecd9ec894b5830c0f09e22e82959294edf37217224c88b7b"; + aarSha256 = "33193135a64fe21fa2c35eec6688f1a76e512606c0fc83dc1b689e37add7732a"; } + + { artifactId = "legacy-support-core-ui"; + groupId = "androidx.legacy"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "2baaf7f17551765524bd1e4d2f954a2a0178a112039cf549ba8b7d4b41e66931"; + aarSha256 = "0d1260c6e7e6a337f875df71b516931e703f716e90889817cd3a20fa5ac3d947"; } + + { artifactId = "legacy-support-core-utils"; + groupId = "androidx.legacy"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "8fd093008b3ee7c06e52c78da2af980a7b47b69b967fa91dad7af466f7a00a38"; + aarSha256 = "a7edcf01d5b52b3034073027bc4775b78a4764bb6202bb91d61c829add8dd1c7"; } + + { artifactId = "lifecycle-common"; + groupId = "androidx.lifecycle"; + version = "2.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = "7bad7a188804adea6fa1f35d5ef99b705f20bd93ecadde484760ff86b535fefc"; + pomSha256 = "04d525073469214d0c99e81aaa875dd548ba32b82945abd8326bc50229df700d"; + aarSha256 = null; } + + { artifactId = "lifecycle-livedata"; + groupId = "androidx.lifecycle"; + version = "2.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "a84842ffc0f14e518db75c05cc112680a8a4a164fa78395be32d88304a439423"; + aarSha256 = "c82609ced8c498f0a701a30fb6771bb7480860daee84d82e0a81ee86edf7ba39"; } + + { artifactId = "lifecycle-livedata-core"; + groupId = "androidx.lifecycle"; + version = "2.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "650fda1a232f5669742140571570ccad2f47a71225ab0f02179bc8d144b982c8"; + aarSha256 = "fde334ec7e22744c0f5bfe7caf1a84c9d717327044400577bdf9bd921ec4f7bc"; } + + { artifactId = "lifecycle-runtime"; + groupId = "androidx.lifecycle"; + version = "2.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "a92a46fa7aec8ac326a5d578734a2d5b63206976996b9e06cae171b35b0ab6de"; + aarSha256 = "e4afc9e636183f6f3e0edf1cf46121a492ffd2c673075bb07f55c7a99dd43cfb"; } + + { artifactId = "lifecycle-viewmodel"; + groupId = "androidx.lifecycle"; + version = "2.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "60b758fd1c664089f82d1c018ed4ff7955c14a2b1620af7aa106591f733e0827"; + aarSha256 = "d6460aea1b6bad80ab14cf88297e9e43bfde8d87c3e5c28f2c508233ffbcc062"; } + + { artifactId = "loader"; + groupId = "androidx.loader"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "c978d550808b47434aa49a63164110a50b55b0bcc6160a93a2e37d5110df8c5e"; + aarSha256 = "11f735cb3b55c458d470bed9e25254375b518b4b1bad6926783a7026db0f5025"; } + + { artifactId = "localbroadcastmanager"; + groupId = "androidx.localbroadcastmanager"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "a000041f5a1f79283c5175e1bb60cf3683780f401c6a9d34fbe9751253fa6ff9"; + aarSha256 = "e71c328ceef5c4a7d76f2d86df1b65d65fe2acf868b1a4efd84a3f34336186d8"; } + + { artifactId = "print"; + groupId = "androidx.print"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "62482c0594841bee24bb996abb6cb7b320a6a3b77dca9f0a0ba4fe3be5530aa7"; + aarSha256 = "1d5c7f3135a1bba661fc373fd72e11eb0a4adbb3396787826dd8e4190d5d9edd"; } + + { artifactId = "slidingpanelayout"; + groupId = "androidx.slidingpanelayout"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "40e90f96838c2a8156ab51b181400767049f387cec8c695e412d3d9205b0745b"; + aarSha256 = "76bffb7cefbf780794d8817002dad1562f3e27c0a9f746d62401c8edb30aeede"; } + + { artifactId = "swiperefreshlayout"; + groupId = "androidx.swiperefreshlayout"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "8fe4b5db332af33cde899ba571ee866ad977be38114d3ab600edaca454ea8299"; + aarSha256 = "9761b3a809c9b093fd06a3c4bbc645756dec0e95b5c9da419bc9f2a3f3026e8d"; } + + { artifactId = "versionedparcelable"; + groupId = "androidx.versionedparcelable"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "47ee7c5543239a651f8fb81310cadeeaab8e38a2d844d7bb92dd086e4ffbb320"; + aarSha256 = "f6438a93ed8016ccddca0e140a70be0b0110e0424edaa1472f84f98fed2e1ce3"; } + + { artifactId = "viewpager"; + groupId = "androidx.viewpager"; + version = "1.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "1f72f836339d03c6eb013f65075e76ca87075a577578eb4f95f74a3a5d253128"; + aarSha256 = "147af4e14a1984010d8f155e5e19d781f03c1d70dfed02a8e0d18428b8fc8682"; } + + { artifactId = "baseLibrary"; + groupId = "com.android.databinding"; + version = "3.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "5e4f3b90995be63f3c8eeecce120c588a98c6aad3b54f60ad4c80b5418c4b012"; + pomSha256 = "63da0e18ab10800d448b0d8ab2171bf9a2e273d06300a7c79fd39d7fa6effee1"; aarSha256 = null; } { artifactId = "annotations"; groupId = "com.android.tools"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "cd69e90c331faa78ae5e65509a2ac9df452d1ee2bad7cf3034f073fc1c1305af"; - pomSha256 = "59ac55c581df73ba7efdc454c9134a63330db42f62053a675f36ad22265e3b6b"; + jarSha256 = "1877849936f48cd65857bf448743f9a0bf93ed47fe57527d9ad8af875024888d"; + pomSha256 = "c17bdf198c7609ce6fc63169800b26e366ff3131b8360ca9979c8234eba90c44"; aarSha256 = null; } { artifactId = "common"; groupId = "com.android.tools"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "b24e096cdd8ca1c38ce34f722bfea3e60ce5017a0c637af6b229d9bc3fc3a14a"; - pomSha256 = "7d90ddec5f11b616aa80ff306bd818d1133f3cffafca88cc3e2bdd659863c75b"; + jarSha256 = "bbda65fe64198125142ecc2079b62835f50ae105e51f34f8349ac129b72efd7c"; + pomSha256 = "612f0dcf0c4675737ae8e214bb5b16b8536aaa3cfb786dfa93245e6e8b450e73"; aarSha256 = null; } { artifactId = "dvlib"; groupId = "com.android.tools"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "3790edb05c95577ea2cf3430158b494ffef7f3fce90cd7da1b68e5d52c2e2812"; - pomSha256 = "6b93985e7deda921224dccd63031eeb9b282c00eff3103b3cca4dfd945b0d7e9"; + jarSha256 = "f34fa4196d78b1c36db2e016303d59935fdc2b1abd0b4e40b95fa63d6087c582"; + pomSha256 = "fe401446f64f3531565ce332b09b0de5ca53134b3263ce931896f3f5d94460bf"; aarSha256 = null; } { artifactId = "repository"; groupId = "com.android.tools"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "e65a921804a1daa865c73fa8e68286d22353434f60612fc61f5e584dd6d88e32"; - pomSha256 = "e9344a57c53db3a11520d160da91482d0f491c08edde34bc1c5b4fb5baf798f1"; + jarSha256 = "5183d0d2493d588d7960f954221a29130b67f1ac5f78c2d6f69195346b69617a"; + pomSha256 = "98702b96fb86f22c1f230316ae8172fd9e843929485bba86a1a01e97614a8434"; aarSha256 = null; } { artifactId = "sdk-common"; groupId = "com.android.tools"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "38954e8d9c297d62846ac7bcddc7a5758a184ec1b05092e5e1089650be4962b0"; - pomSha256 = "02554156b6af9aafbb34da23ad09ccc93383657b47b2ac8e151ec325966a8e72"; + jarSha256 = "df1e814bdcee8f60c1057a3df2b2cd6c089623414017283740eb50152f1e70c5"; + pomSha256 = "c7786e12c89c77e4daea2ebb991491821f90364cd5e06a02b56371a42084b3c0"; aarSha256 = null; } { artifactId = "sdklib"; groupId = "com.android.tools"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "d4ebd42e1dbc81281085cdf5b56cebb183a9b8aeae51a84f53ff84774abcc94e"; - pomSha256 = "8971cb4273045b0af916ce6ebeb140527b9ebc917319ce5d1ea266362690e4dd"; + jarSha256 = "ebec9d8e0a140b376aade276b08572cb1f8cf954249b469bee6dce6fd5a45cd4"; + pomSha256 = "768b365f2486e344d012d5b4b9b195fde8bfb442c23dca89d258a7766cdba5c8"; + aarSha256 = null; } + + { artifactId = "crash"; + groupId = "com.android.tools.analytics-library"; + version = "26.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "22189a009a57c1741f74deeae5442a101c1c5c8bd6c6404e8e87a7d7f58044e4"; + pomSha256 = "aea2ab26c83212e1b81b5d2e91056ea41b1dbbc2f0801bbb3921a405da6bf685"; aarSha256 = null; } { artifactId = "protos"; groupId = "com.android.tools.analytics-library"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "80c134366b35e375d2ed22158d8958f3732366fa80980df76bd632371368eb96"; - pomSha256 = "5a3f320877640666ea483eb6764e6d407c283c324d4d45b38db9d5fbfc8bdf8b"; + jarSha256 = "39f429bc72340a45ea1b77ade9a4aa11ecebcb2a9dd0bb3619bfedc40800af0e"; + pomSha256 = "ff1ca6ebc2153aaf2ec92880c3240971b4aee894b19bd145f6385fbb18808029"; aarSha256 = null; } { artifactId = "shared"; groupId = "com.android.tools.analytics-library"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "9772cb36f7498ca30f0accf25911560753fbe9167c3af58e8b00e7eb6ac1f7c3"; - pomSha256 = "8c5adb944e161657e866270783fb92a4a6bf2c1e5d3211a98b7ab1b3b7c91cb2"; + jarSha256 = "a3ee9f50da48f12d3677f18372fffdcf51f3c340335e335fb71365c92e31d1de"; + pomSha256 = "95cadcfabab9a6a7e8a2146938de653b559161c098d82a9d34621bbd2b8cdab9"; aarSha256 = null; } { artifactId = "tracker"; groupId = "com.android.tools.analytics-library"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "ed9d26dce59d2e5b436702da2f7c57d52754c3afbc558872db30ac110279967d"; - pomSha256 = "77fa615c35438801d49a487f82b6426d5f55c516b7a287d975c25432dc77af7a"; + jarSha256 = "b888eba61ebe734f8e50b60fa1bf38d9144dc031abb3704d6f2b4e445a53196e"; + pomSha256 = "ccfc624a522641d858e7a6477abb698889bd81de584d04b705a737bd59d7c784"; aarSha256 = null; } { artifactId = "aapt2-proto"; groupId = "com.android.tools.build"; - version = "0.1.0"; + version = "0.3.1"; repo = "https://maven.google.com/"; - jarSha256 = "20a5111ef908e8cbab6c0a0e3ae1c031fa1460ed6bb00b4f621e9e93e6fac9f4"; - pomSha256 = "6ca265a30441628d070e4abe03b3c3c9ddadbcf3a06283ba0d6506baaaa23bc1"; + jarSha256 = "a503219b89b0aaf7b7c6c9b3b17d69e655a6c619072b684a1ea4fbf1d7dc49da"; + pomSha256 = "31e5f0e56b59a7c1433ab4a0396fd6178ef28def6cf6eb58e235d7cf40efd01d"; aarSha256 = null; } { artifactId = "apksig"; groupId = "com.android.tools.build"; - version = "3.1.0"; + version = "3.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "fa7c629e1ef9e8e3bedd647431f5d023ba87b5ad536c3a79497e2cd8c40f40be"; - pomSha256 = "48b9884f3c8d7765749723a8224299fa73bdb453c54126529c274305bc37077d"; + jarSha256 = "7cb448a8317dc3b82629898c211895862453eee62acb12ad23c32ccdc2c942e2"; + pomSha256 = "bf7a23f999b0ad601ff9bf7b1e3987993587e51527e1b00991f4cc85370b2fc1"; + aarSha256 = null; } + + { artifactId = "apkzlib"; + groupId = "com.android.tools.build"; + version = "3.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "e00dbbd0997beba194e18d2a62647e42b2e62192652796bcbe5ea9b06687ba5c"; + pomSha256 = "256d360aa2524cebf97cf245b93e175b7062719c68d015297cfef37cfe9930ab"; aarSha256 = null; } { artifactId = "builder"; groupId = "com.android.tools.build"; - version = "3.1.0"; + version = "3.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "2166e41cacbce74d2573afd585b719b826f34863d7d9e9db1103e61686857ad1"; - pomSha256 = "01b97e89902e1a85de0d7a6708d56dca8b8ca4c496f2710e777f3c74e2dd9660"; + jarSha256 = "3d104b1e0083aac49f5ea8d5e0e0cd740dd333bef2683a3214e1cd1953ffd661"; + pomSha256 = "0e7df1472a90a67d611f17528dfc2b6bcbc9fa7f799573ba79ec4407305a2ad8"; aarSha256 = null; } { artifactId = "builder-model"; groupId = "com.android.tools.build"; - version = "3.1.0"; + version = "3.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "3101fdd6ae78f7fd4a2f5fd15c50d2fc321f2978f2e732e2c9729bdafd85fdf7"; - pomSha256 = "31641a4746e77cec3e3375c9973530f82a389bead83099f32dcfc38137695557"; + jarSha256 = "ddb36ca7fe72024bd53fbdd2700f1a9a9af5b1502062d59952eb3da7584fe413"; + pomSha256 = "677521e59c49c5e9c99ae390bab53139d062f05764d7363894c1e1864ef0aff5"; aarSha256 = null; } { artifactId = "builder-test-api"; groupId = "com.android.tools.build"; - version = "3.1.0"; + version = "3.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "51642702f1610ac3802c930983ba37737cfa1aedce849de2071f14b9fe6a6f3a"; - pomSha256 = "0aa1569bf11a2f78d202b63ef747f82a3ba0c3affaa6ff2f5071620264d2648e"; + jarSha256 = "40c62a008da4fa933cb20135227409d2953ed88ed68195e0f631d326c5675c46"; + pomSha256 = "7d96325cc2fef2fa3898d121e936528f987caddbbab7cfddb524c6995b09ab1f"; aarSha256 = null; } { artifactId = "bundletool"; groupId = "com.android.tools.build"; - version = "0.1.0-alpha01"; + version = "0.7.2"; repo = "https://maven.google.com/"; - jarSha256 = "3bdb56f0bfabcd26ef63e58700f0d7e5087cd1e95e1abe2aa2e4b300b5616f15"; - pomSha256 = "6c6776338f04a28676ab0d4ad13a1ada690998f4a843068cd3af7589f6d3e188"; + jarSha256 = "420bb34c44c9e3341583fa90bb4ad331db0b2ed902a5e75b9a420f4edd9f7894"; + pomSha256 = "e917f5fc3bef4e31107c1aaa0e47781e788be9d86682288f44cd4a3ad17b3459"; aarSha256 = null; } { artifactId = "gradle"; groupId = "com.android.tools.build"; - version = "3.1.0"; + version = "3.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "f05f7bcfa15bbc61a197b6f575a0ad4a1ef750f9e906e29e4362a7059ba7616d"; - pomSha256 = "dc417b6aa3ec6ff879b13720a11f463aa00f1f9ab7c33b9fe4006de67c29cd52"; + jarSha256 = "536afc619d2678b80bd7d0b5674be249f05fad349a8717998b69d48f66062fb5"; + pomSha256 = "e1d38f808e126ada6b7f77cc1d66e7fce01d1e03941d14e38062d41b7ab37953"; aarSha256 = null; } { artifactId = "gradle-api"; groupId = "com.android.tools.build"; - version = "3.1.0"; + version = "3.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "b74049d19d3cf68a74da30e88e2d10b1e5127a555de32ccabde05cbbf36211d7"; - pomSha256 = "075e524b0db8885e885806f6fc7e6832c7af3c74dd7806b9c59a2ce321fd1f32"; + jarSha256 = "e6cddde562483c96b699be25fc91a78e141397e51a382eedae9b2c0e22ea22f5"; + pomSha256 = "cc23bd10f9843e57f6f2bb1f5731ac32e1d73696927f93c3ea2972d76de3b017"; aarSha256 = null; } - { artifactId = "gradle-core"; - groupId = "com.android.tools.build"; - version = "3.1.0"; + { artifactId = "intellij-core"; + groupId = "com.android.tools.external.com-intellij"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "3233ce076be21d977a817abfe7d937739f7a1d6dac30a497df30124989d2da85"; - pomSha256 = "8d5bbd5948e49bbc51f42c029d3a4bf8f2b8b495c8e25fc0cf0efc9df5f07054"; + jarSha256 = "890258258338ddfdec138852d099fec389cdcdf1d0a9cb2d0775e4275cb3a05d"; + pomSha256 = "e772f888bf1cb338f5f6d7801516cb48e31b57f8d81ae07304b0ad1a2cb1c8dc"; aarSha256 = null; } { artifactId = "manifest-merger"; groupId = "com.android.tools.build"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "a096805a7e0fb3dc10fa47c325186bebb55bbf5c77cb54dd4b1c71b723692628"; - pomSha256 = "041cda360c68cb182a9b2cfae639d4b3590f714181b756452905aff9a4e5e2ed"; + jarSha256 = "86a43c18ab36ae51b997784880492336c009891a05df7b40a574da51031c3f63"; + pomSha256 = "d2575b5e4a009a32dddfbae58fc882d54345ca29e1e9d550ac689ab637524b01"; aarSha256 = null; } { artifactId = "transform-api"; @@ -183,28 +423,76 @@ pomSha256 = "d49d179f707d3f3a00b2a7d36136b54aa8d44fa22770703cd82fe52fb39e22eb"; aarSha256 = null; } + { artifactId = "jetifier-core"; + groupId = "com.android.tools.build.jetifier"; + version = "1.0.0-beta04"; + repo = "https://maven.google.com/"; + jarSha256 = "c9f8b016144cfb31c5aee92d47f34de23289167cac5e8ef68365b2dd05766f11"; + pomSha256 = "db025ad1bbc6896edf0f67cda1222ba9b7ec9a0187df7f4fd0a318475c758e4e"; + aarSha256 = null; } + + { artifactId = "jetifier-processor"; + groupId = "com.android.tools.build.jetifier"; + version = "1.0.0-beta04"; + repo = "https://maven.google.com/"; + jarSha256 = "1dd481e7606ccb30868908d9ae80f27d1c5ba882f792532bd91ed731c54f4efb"; + pomSha256 = "4973a6c6d7f89297a1cfea56c623cea72b3db3b4a49992afa00dd77ac052b89f"; + aarSha256 = null; } + { artifactId = "ddmlib"; groupId = "com.android.tools.ddms"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "6d95df7310eecf36772e74e25bf9dcffe8d1caf3614fb173443f5a5d6c937fe1"; - pomSha256 = "674c6cc0741b9babe0f154734d826c4313889bf8a9e6b3ca8af8c1bf206ebbf5"; + jarSha256 = "330e3eb76d2f96e3931a8cccdbf16435e92b3398dcaa8b65c8cd1034864de720"; + pomSha256 = "4aeb9585e81656f358fd1a7a45f8c711a9eef8a61ba88641e76f776cf4f1aa10"; aarSha256 = null; } { artifactId = "layoutlib-api"; groupId = "com.android.tools.layoutlib"; - version = "26.1.0"; + version = "26.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "52fbb3614feee0d5d474c35f8c533ff3fa090cbf0df46c06e4cf353cae1c3652"; + pomSha256 = "d59ef58abb73f06650ce1d80641fe70a3908a071fc5f98267074e6e42f904360"; + aarSha256 = null; } + + { artifactId = "lint"; + groupId = "com.android.tools.lint"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "29da0f2265bf14cea484bb492813318c9268afc0aac85e625ba6d0e85382ef61"; - pomSha256 = "2a587e265c5ce8aa01d4f2a5958a6c8cd4d56f28d1dcdbfb53daadb1158a898f"; + jarSha256 = "5eeb74d75aad007428ce5077f2c5c721cc7a2bb702b0525fa9605efad3afd7e8"; + pomSha256 = "ac7e208ce2e2bfece25498538c6a16b501a4813818149fc1f0670778b7bd6b24"; + aarSha256 = null; } + + { artifactId = "lint-api"; + groupId = "com.android.tools.lint"; + version = "26.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "d12d58c8a2ccb68daa7cbd70a0904b8f05dfdfc6c3a1871923b1b903bf5bf4da"; + pomSha256 = "d3cdb948a13f651daf42dba2b488e4cd76092cfc5c00993c653060fb298b7ec8"; + aarSha256 = null; } + + { artifactId = "lint-checks"; + groupId = "com.android.tools.lint"; + version = "26.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "8a0246f594d685bda999a66b2409cb4e0da59e59a66021c9293fdb40cc49d879"; + pomSha256 = "e9327b00b990f6b28f8cc974e98ea4436bbf03e2bc66ea4769970eb26dd840b5"; + aarSha256 = null; } + + { artifactId = "lint-gradle"; + groupId = "com.android.tools.lint"; + version = "26.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "7e8e000f063f42f10ca209f51a48b332db1c4d3ac30979cc49c1877ef9e4b7f1"; + pomSha256 = null; aarSha256 = null; } { artifactId = "lint-gradle-api"; groupId = "com.android.tools.lint"; - version = "26.1.0"; + version = "26.4.2"; repo = "https://maven.google.com/"; - jarSha256 = "165576ede06d1a6466ded082938d162ed98bbdfb5e829874a18ffb58e59ec2ad"; - pomSha256 = "6743e37575c3138fe821ff1afd78d4545db8b0e850efac139dff36bb6590d46b"; + jarSha256 = "90c6a1a650a257abb5d445dde9c172d55e6d28ce943a35b4e263c4cb3dcc96b0"; + pomSha256 = "a8496204c0e7def7adee23e3d0f7ff0117b92c4809ecc8d2c06fc6b18b53e7c6"; aarSha256 = null; } { artifactId = "google"; @@ -215,6 +503,102 @@ pomSha256 = "cd6db17a11a31ede794ccbd1df0e4d9750f640234731f21cff885a9997277e81"; aarSha256 = null; } + { artifactId = "transport-api"; + groupId = "com.google.android.datatransport"; + version = "2.1.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "90df79a49f78c427aaa72e2bdba81732e6a19ac14e0655ac13fdf20a5e4f4316"; + aarSha256 = "c876d4f93b6d03cf7fba46e2d7f458d31ed4c68d8d50c5d453c7f63dfa0ff82e"; } + + { artifactId = "transport-api"; + groupId = "com.google.android.datatransport"; + version = "2.2.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "ba50c554f459220920168d591ddb221eeeb78ea2f44ff0a659f05514fbfc034f"; + aarSha256 = "576514f8b75d8ae32897f1b9b031f88b00465bf6e0996e227d09af688195f71e"; } + + { artifactId = "transport-backend-cct"; + groupId = "com.google.android.datatransport"; + version = "2.1.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "0596082466dd0a1188d87a9b7e0bf7505d39aff5b7846a24054e0dfcb2a5820b"; + aarSha256 = "3357e12aafeb176cbd8f438da601c612d6694430f7e44227abfe0ff1d9aebd37"; } + + { artifactId = "transport-backend-cct"; + groupId = "com.google.android.datatransport"; + version = "2.2.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "b932519ddf57b6cc3d6775bd016b4b236bfc30bc832b1c888f7e90d4cc9059b0"; + aarSha256 = "33abba2b7749479ae397176ae482b1807010b2bb331d61264bbdcc799eb398cd"; } + + { artifactId = "transport-runtime"; + groupId = "com.google.android.datatransport"; + version = "2.1.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "339855f65009224f99d07cd4c895099327a4e705c7e16df7ed6753441f73c670"; + aarSha256 = "3d2d609a27ff4b19537025e2bb77587ad6ff286bed7b3c60a7809fc1604969af"; } + + { artifactId = "transport-runtime"; + groupId = "com.google.android.datatransport"; + version = "2.2.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "a911c8a33f02942c10a5e730613a533c209d6ae8ddb0e7cd8e65fceb1162de56"; + aarSha256 = "e72912014b67151b689a7e820d3f1edf12fe2af5fbc308ab196ac392436ab771"; } + + { artifactId = "play-services-base"; + groupId = "com.google.android.gms"; + version = "17.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "c30489d38be5d41e19272f6aa47d6c43de85034500bcb1864b79381c9634d924"; + aarSha256 = "dd0980edf729e0d346e2b58e70801dc237c1aed0c7ab274fa3f1c8c8efc64cc7"; } + + { artifactId = "play-services-basement"; + groupId = "com.google.android.gms"; + version = "17.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "ffe9295d9eb2ec2d784bb4c3634f6a10175224d2111332fa2735320b52a24b66"; + aarSha256 = "d324a1785bbc48bfe3639fc847cfd3cf43d49e967b5caf2794240a854557a39c"; } + + { artifactId = "play-services-stats"; + groupId = "com.google.android.gms"; + version = "17.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "16f62288613923857f616976985fdfdc212bacc898b2b947715ebffd8fdea19b"; + aarSha256 = "e8ae5b40512b71e2258bfacd8cd3da398733aa4cde3b32d056093f832b83a6fe"; } + + { artifactId = "play-services-tasks"; + groupId = "com.google.android.gms"; + version = "17.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "fdd93302c2eb94bbe6007caa28d072246d2875cda5cb774bb6299416b94d74a6"; + aarSha256 = "2e6d1738b73647f3fe7a038b9780b97717b3746eae258009197e36e7bf3112a5"; } + + { artifactId = "strict-version-matcher-plugin"; + groupId = "com.google.android.gms"; + version = "1.2.1"; + repo = "https://maven.google.com/"; + jarSha256 = "0c1027a51198190386eae3f90adee9a30687e76da7589f06c79269fea4c7a4c0"; + pomSha256 = "33417a7f40225f2b5ffc67df4c2c2e7e9050028af2cbecf9de2b8e1c33401fd3"; + aarSha256 = null; } + + { artifactId = "uast"; + groupId = "com.android.tools.external.org-jetbrains"; + version = "26.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "187b199e1744bd3e922fb52d8f3366311468bd263aab24c65ee989d7ce8c55c3"; + pomSha256 = "0f308532ff2c78cfbb61f563cf65e8cf408afb8a615598c512649a9c397177d4"; + aarSha256 = null; } + { artifactId = "auto-parent"; groupId = "com.google.auto"; version = "3"; @@ -223,6 +607,14 @@ pomSha256 = "c98f1b0978cfd24712c27388e040c50ce0692252b3aa9448603d9efa05ebe8a8"; aarSha256 = null; } + { artifactId = "auto-parent"; + groupId = "com.google.auto"; + version = "7"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "a46426fccb5d32705ad9cbbc996f786bd048cc8cbdd21db046500169f15a4356"; + aarSha256 = null; } + { artifactId = "auto-value"; groupId = "com.google.auto.value"; version = "1.5.2"; @@ -231,12 +623,28 @@ pomSha256 = "901fb1440a0ef8e0c0553a7bb44c0b89647bf53c8822642eea0b57173c7c688d"; aarSha256 = null; } + { artifactId = "auto-value-annotations"; + groupId = "com.google.auto.value"; + version = "1.6.5"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "3677f725f5b1b6cd6a4cc8aa8cf8f5fd2b76d170205cbdc3e9bfd9b58f934b3b"; + pomSha256 = "6fc498858e0cd1387595af38957820cb341d1e687ccf753e1cbd982f46ef4fc3"; + aarSha256 = null; } + + { artifactId = "auto-value-parent"; + groupId = "com.google.auto.value"; + version = "1.6.5"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "b9d2d3aa6919d5f07e18c7cea942be9aef3b650a8f1e68f33c854a25c09c2049"; + aarSha256 = null; } + { artifactId = "jsr305"; groupId = "com.google.code.findbugs"; - version = "1.3.9"; + version = "3.0.2"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "905721a0eea90a81534abb7ee6ef4ea2e5e645fa1def0a5cd88402df1b46c9ed"; - pomSha256 = "feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a"; + jarSha256 = "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7"; + pomSha256 = "19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe"; aarSha256 = null; } { artifactId = "gson"; @@ -247,6 +655,22 @@ pomSha256 = "723936ec07b87b210a44ef8058f32f56e3d56442218dfbf8f4e538a927160ede"; aarSha256 = null; } + { artifactId = "gson"; + groupId = "com.google.code.gson"; + version = "2.8.0"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "c6221763bd79c4f1c3dc7f750b5f29a0bb38b367b81314c4f71896e340c40825"; + pomSha256 = "a5331a0ecb548f9942ab5b93c7ac43c38a21e897763dde1bcdbf0774f416ca6f"; + aarSha256 = null; } + + { artifactId = "gson"; + groupId = "com.google.code.gson"; + version = "2.8.5"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81"; + pomSha256 = "b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092"; + aarSha256 = null; } + { artifactId = "gson-parent"; groupId = "com.google.code.gson"; version = "2.7"; @@ -255,36 +679,140 @@ pomSha256 = "871e8c737322301f0cc8acfe39a2960c4579d9d8666aeea5298bb6fcc9e4272b"; aarSha256 = null; } - { artifactId = "error_prone_annotations"; - groupId = "com.google.errorprone"; - version = "2.0.18"; + { artifactId = "gson-parent"; + groupId = "com.google.code.gson"; + version = "2.8.0"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "0f1d8369b1e9f1bc4b467c8dcfdd8b59733aad5b5c8419c3a59b2f9abaf04cd2"; + aarSha256 = null; } + + { artifactId = "gson-parent"; + groupId = "com.google.code.gson"; + version = "2.8.5"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "cb4cfad870bf563a07199f3ebea5763f0dec440fcda0b318640b1feaa788656b"; - pomSha256 = "9144127192d6f612c2366825dceaeb23b0d53130b83e0bf1ffe107d1470a8487"; + jarSha256 = null; + pomSha256 = "8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27"; + aarSha256 = null; } + + { artifactId = "dagger"; + groupId = "com.google.dagger"; + version = "2.24"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "550a6e46a6dfcdf1d764887b6090cea94f783327e50e5c73754f18facfc70b64"; + pomSha256 = "477bdf6579ecc9cc8f99a565203f6244914f289d87e7efbdf96243fa58f9df4c"; aarSha256 = null; } { artifactId = "error_prone_annotations"; groupId = "com.google.errorprone"; - version = "2.1.2"; + version = "2.2.0"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "de3c873b5dc06060f7a2a4d9b872a3f4dc1955c18095ef9702d13477e437782a"; - pomSha256 = "180a588bb8b4ed7cc554578b0dbfdb1aecfb3380922173df6541da18ee230911"; + jarSha256 = "6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a"; + pomSha256 = "5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5"; aarSha256 = null; } { artifactId = "error_prone_parent"; groupId = "com.google.errorprone"; - version = "2.0.18"; + version = "2.2.0"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "cf149955279b07d4f11e817985c1164a69e930d73db7441b43a6ef53bbd286c4"; + pomSha256 = "c460902ddf5ece68832c6b271ce52a0928b05cf3a6ac81a8f548c73cbd541138"; aarSha256 = null; } - { artifactId = "error_prone_parent"; - groupId = "com.google.errorprone"; - version = "2.1.2"; - repo = "https://jcenter.bintray.com/"; + { artifactId = "firebase-common"; + groupId = "com.google.firebase"; + version = "19.3.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "d11dd4923436f29d301d0d8fc0e03a3497bce181e572c54a74cb84b925b3a085"; + aarSha256 = "7bd7971470ff943e3c3abb1d7809ef5cb4b81f1996be0867714372b3efa7405a"; } + + { artifactId = "firebase-components"; + groupId = "com.google.firebase"; + version = "16.0.0"; + repo = "https://maven.google.com/"; jarSha256 = null; - pomSha256 = "c6b6d61ddb8f6b3bf29e8dafe35ff5d5a1ea90304b457e05657c1e7b8063a143"; + pomSha256 = "5c5d0a5f811e4eb7512ea7aba70241ebeb27b9e195fbdea9b2c4b914272c326e"; + aarSha256 = "8ef43b412de4ec3e36a87c66d8a0a14a3de0a2e8566946da6a0e799b7fdd8ec9"; } + + { artifactId = "firebase-datatransport"; + groupId = "com.google.firebase"; + version = "17.0.3"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "04bd79c377c7b03fe3d4a5f26b90b0cfb0654c2d3b5c8dcfa6e90fcb1cb8d5d4"; + aarSha256 = "10c9f65c4f897ea33d028e46226daaabdfee43ac712559e5570d21b6b58a067e"; } + + { artifactId = "firebase-encoders-json"; + groupId = "com.google.firebase"; + version = "16.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "dcaf1909552a73b2f7081768d687331e09200b7afeddd5be7712291cf1359425"; + aarSha256 = "d1769fcec2a424ee7f92b9996c4b5c1dff0dfa27ceed28981b857b144fb5ec49"; } + + { artifactId = "firebase-iid"; + groupId = "com.google.firebase"; + version = "20.2.3"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "e0e27db2be35f8b5e2d73eb37d0b2431ecb5337e55bb74c04aa816ff279dc2a3"; + aarSha256 = "4ee59ef2d256a1c64bb55665d9fd3ca822e371e36d3a9b901582a9fb426d657c"; } + + { artifactId = "firebase-iid-interop"; + groupId = "com.google.firebase"; + version = "17.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "d01b366337829913fb0efc8c17388ad9673e3531fddf48d2f76d63e21bc5e788"; + aarSha256 = "b6f4ad581eb489370be3bf38a4bdabfc6ea3d4e716234c625a0f42516c53523c"; } + + { artifactId = "firebase-installations"; + groupId = "com.google.firebase"; + version = "16.3.2"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "8de71da34dc282a211b256e5872083937857d8781fcdbcac086d38ed0982d41b"; + aarSha256 = "0d0f88b3c3789d5fe1aa9a69bd5ab6c0e92036fcf34520775a0091e37268dd3f"; } + + { artifactId = "firebase-installations-interop"; + groupId = "com.google.firebase"; + version = "16.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "623c9a2cc9d554afae478e0c82f644df9dc55efb2fb2491fd22761094f73287e"; + aarSha256 = "d498fe20e7d2c65fc8f7124f1c1791d2828bebdf6bf06ab4cdee13e7fe9ccaa2"; } + + { artifactId = "firebase-measurement-connector"; + groupId = "com.google.firebase"; + version = "18.0.0"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "24bd1b4a8f81aea76ae30054df6343b5c0abc27024a5f6fb9c6ee7d4ffb86533"; + aarSha256 = "17e8b9b60ac0a79fcbed754d03d4b966cc5bb8837e79c2308bf2970f1d05700c"; } + + { artifactId = "firebase-messaging"; + groupId = "com.google.firebase"; + version = "20.2.3"; + repo = "https://maven.google.com/"; + jarSha256 = null; + pomSha256 = "78c2c4b37726c4ef475eb20f9864bf09f95b6ae2e95f6ef1d9bd869bc5e2eac5"; + aarSha256 = "6c188ff01e9ac4e714bb26c95a920c35d98ec0c324724d13de0ea3539423cdd0"; } + + { artifactId = "google-services"; + groupId = "com.google.gms"; + version = "4.3.3"; + repo = "https://maven.google.com/"; + jarSha256 = "d9668002ef7032deddf7dbf853b47e10e6722bbce1b318fe7d6a297e28a8dcae"; + pomSha256 = "d46bba8531af0a008504148486dd2584432278499db092a4f3916dfbd32b3b7b"; + aarSha256 = null; } + + { artifactId = "failureaccess"; + groupId = "com.google.guava"; + version = "1.0.1"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26"; + pomSha256 = "e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9"; aarSha256 = null; } { artifactId = "guava"; @@ -305,10 +833,26 @@ { artifactId = "guava"; groupId = "com.google.guava"; - version = "22.0"; + version = "23.0"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "7baa80df284117e5b945b19b98d367a85ea7b7801bd358ff657946c3bd1b6596"; + pomSha256 = "ac2ac42a7a6b4ce5097c6c83e2fbbacbbb7f9913f1b4f993eb1723a14476324e"; + aarSha256 = null; } + + { artifactId = "guava"; + groupId = "com.google.guava"; + version = "26.0-jre"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "1158e94c7de4da480873f0b4ab4a1da14c0d23d4b1902cc94a58a6f0f9ab579e"; - pomSha256 = "bfadb3b40f65dd6de1666d6b29f8bb54031396c76eeef4146cf9f28255f8bf33"; + jarSha256 = "a0e9cabad665bc20bcd2b01f108e5fc03f756e13aea80abaadb9f407033bea2c"; + pomSha256 = "1c337adc9a4ab4b844da81da85936581b8946c7cb71284c5dcbdaf1eaa7ee109"; + aarSha256 = null; } + + { artifactId = "guava"; + groupId = "com.google.guava"; + version = "27.0.1-jre"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "e1c814fd04492a27c38e0317eabeaa1b3e950ec8010239e400fe90ad6c9107b4"; + pomSha256 = "6a8dd041f23a6bb14a86e440fccb993537b62271357a0dac0a3cb0ff39158f36"; aarSha256 = null; } { artifactId = "guava-parent"; @@ -329,10 +873,42 @@ { artifactId = "guava-parent"; groupId = "com.google.guava"; - version = "22.0"; + version = "23.0"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "66cc3a0d329f9fe130605fdb2c901e5a9bb2612f02f23a76757b46e689b3594d"; + aarSha256 = null; } + + { artifactId = "guava-parent"; + groupId = "com.google.guava"; + version = "26.0-android"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04"; + aarSha256 = null; } + + { artifactId = "guava-parent"; + groupId = "com.google.guava"; + version = "26.0-jre"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "bb7d5cd417c0d7def5e3e27092fdd23522d3fc251ad8a07956c13ce0573aeaa3"; + aarSha256 = null; } + + { artifactId = "guava-parent"; + groupId = "com.google.guava"; + version = "27.0.1-jre"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "1eaf9182e1977c1c50a70edbfbf70536398c68990bfaafc9f0e9899041201539"; + pomSha256 = "317e88291262e0cf2805e956c18850f1d4565c85c2e1112f5d9d08ab1732e696"; + aarSha256 = null; } + + { artifactId = "listenablefuture"; + groupId = "com.google.guava"; + version = "9999.0-empty-to-avoid-conflict-with-guava"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"; + pomSha256 = "18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b"; aarSha256 = null; } { artifactId = "j2objc-annotations"; @@ -359,6 +935,14 @@ pomSha256 = "c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd"; aarSha256 = null; } + { artifactId = "protobuf-bom"; + groupId = "com.google.protobuf"; + version = "3.10.0"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "32ff2307dafc658d0b55b2ad841d625aea5606bb9b0316605165cd6980503243"; + aarSha256 = null; } + { artifactId = "protobuf-java"; groupId = "com.google.protobuf"; version = "3.4.0"; @@ -497,10 +1081,10 @@ { artifactId = "commons-codec"; groupId = "commons-codec"; - version = "1.6"; + version = "1.10"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "54b34e941b8e1414bd3e40d736efd3481772dc26db3296f6aa45cec9f6203d86"; - pomSha256 = "a06e35d3fff3a6b813d94894ebf3e498f9540c864c5b39ae783907e3a6c72889"; + jarSha256 = "4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569"; + pomSha256 = "bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb"; aarSha256 = null; } { artifactId = "commons-io"; @@ -513,10 +1097,10 @@ { artifactId = "commons-logging"; groupId = "commons-logging"; - version = "1.1.1"; + version = "1.2"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "ce6f913cad1f0db3aad70186d65c5bc7ffcc9a99e3fe8e0b137312819f7c362f"; - pomSha256 = "d0f2e16d054e8bb97add9ca26525eb2346f692809fcd2a28787da8ceb3c35ee8"; + jarSha256 = "daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636"; + pomSha256 = "c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20"; aarSha256 = null; } { artifactId = "fastutil"; @@ -527,6 +1111,14 @@ pomSha256 = "953b116521a73575eee990e3f2c36a892fb088bb2d9a3027c82193cb7a013ef7"; aarSha256 = null; } + { artifactId = "javax.inject"; + groupId = "javax.inject"; + version = "1"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff"; + pomSha256 = "943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa"; + aarSha256 = null; } + { artifactId = "jaxb-api"; groupId = "javax.xml.bind"; version = "2.2.12-b140109.1041"; @@ -577,26 +1169,26 @@ { artifactId = "proguard-base"; groupId = "net.sf.proguard"; - version = "5.3.3"; + version = "6.0.3"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "1d2e883717b8ab7d3fcc9fa01034d165809a9c94daa6303a838f11e4d36adc86"; - pomSha256 = "e51efb2ec140b2849b9880fb161cb6e30dd672368a534c1f47ab46d7f537d9ca"; + jarSha256 = "75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264"; + pomSha256 = "2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907"; aarSha256 = null; } { artifactId = "proguard-gradle"; groupId = "net.sf.proguard"; - version = "5.3.3"; + version = "6.0.3"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "f34b3a0b62cdb468eb7e8335de4edc87958dc299306c2b4ba8ea15e6a4be106a"; - pomSha256 = "f26bdec2b9496470c0ce63b0d290816e8000ef018daaa259597ebae947fd690f"; + jarSha256 = "cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f"; + pomSha256 = "5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57"; aarSha256 = null; } { artifactId = "proguard-parent"; groupId = "net.sf.proguard"; - version = "5.3.3"; + version = "6.0.3"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "0288414509c625b8dd544384fbd29f502bdc8b4f86cfc26625aa23eef9fa6057"; + pomSha256 = "d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0"; aarSha256 = null; } { artifactId = "antlr4"; @@ -623,6 +1215,14 @@ pomSha256 = "ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d"; aarSha256 = null; } + { artifactId = "apache"; + groupId = "org.apache"; + version = "15"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494"; + aarSha256 = null; } + { artifactId = "apache"; groupId = "org.apache"; version = "16"; @@ -633,10 +1233,10 @@ { artifactId = "apache"; groupId = "org.apache"; - version = "4"; - repo = "https://central.maven.org/maven2/"; + version = "18"; + repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "9e9323a26ba8eb2394efef0c96d31b70df570808630dc147cab1e73541cc5194"; + pomSha256 = "7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17"; aarSha256 = null; } { artifactId = "apache"; @@ -657,114 +1257,82 @@ { artifactId = "commons-parent"; groupId = "org.apache.commons"; - version = "22"; + version = "25"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "fb8c5e55e30a7addb4ff210858a0e8d2494ed6757bbe19012da99d51586c3cbb"; + pomSha256 = "467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba"; aarSha256 = null; } { artifactId = "commons-parent"; groupId = "org.apache.commons"; - version = "25"; + version = "34"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba"; + pomSha256 = "3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c"; aarSha256 = null; } { artifactId = "commons-parent"; groupId = "org.apache.commons"; - version = "39"; + version = "35"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7"; + pomSha256 = "7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a"; aarSha256 = null; } { artifactId = "commons-parent"; groupId = "org.apache.commons"; - version = "5"; + version = "39"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "8bd632c00bdf80a7de36c22b60f12452c147d8eca2f00d79d66699ebe7daa02a"; + pomSha256 = "87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7"; aarSha256 = null; } { artifactId = "httpclient"; groupId = "org.apache.httpcomponents"; - version = "4.2.6"; + version = "4.5.6"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "362e9324ee7c697e21279e20077b52737ddef3f1b2c1a7abe5ad34b465145550"; - pomSha256 = "f5a0a1eeaa100ed36aa83eca562d5dbb7e9b045c98b44db7da4745e9d9a20328"; - aarSha256 = null; } - - { artifactId = "httpcomponents-client"; - groupId = "org.apache.httpcomponents"; - version = "4.1"; - repo = "https://jcenter.bintray.com/"; - jarSha256 = null; - pomSha256 = "5215b648798c6c8d9b9cde3642d3bfb5a4cc894b7c8411004352e7de5d119827"; + jarSha256 = "c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7"; + pomSha256 = "7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855"; aarSha256 = null; } { artifactId = "httpcomponents-client"; groupId = "org.apache.httpcomponents"; - version = "4.2.6"; + version = "4.5.6"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "52b6fd2eaf2240e14dbe752f1fa884270cc668d6f350e8e7f65f6033a8172d69"; + pomSha256 = "b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73"; aarSha256 = null; } { artifactId = "httpcomponents-core"; groupId = "org.apache.httpcomponents"; - version = "4.1"; + version = "4.4.10"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "4f797ffd9c3d156de0dbec1fd1e63e9fd8584a93c7043576553dfcb706f64de4"; + pomSha256 = "61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136"; aarSha256 = null; } - { artifactId = "httpcomponents-core"; + { artifactId = "httpcomponents-parent"; groupId = "org.apache.httpcomponents"; - version = "4.2.5"; + version = "10"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "164e7a9cf23a4e63bbc961f8db7d965d53d685710660a88249641f91d36f83a4"; + pomSha256 = "caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa"; aarSha256 = null; } { artifactId = "httpcore"; groupId = "org.apache.httpcomponents"; - version = "4.1"; + version = "4.4.10"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "3ce38de51f4e24668c6d184057a8d08541f9e815d2d319d0f462f083092b29cf"; - pomSha256 = "4fc86afa38e9c9fab099ccf45c2bc743d453e6ab222490abfe8671975c3c7327"; - aarSha256 = null; } - - { artifactId = "httpcore"; - groupId = "org.apache.httpcomponents"; - version = "4.2.5"; - repo = "https://jcenter.bintray.com/"; - jarSha256 = "e5e82da4cc66c8d917bbf743e3c0752efe8522735e7fc9dbddb65bccea81cfe9"; - pomSha256 = "b6eb99f1362b8344ca5400d57a35c49e3504f23f3dee304fdb879d4d953f4bc6"; + jarSha256 = "78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd"; + pomSha256 = "c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b"; aarSha256 = null; } { artifactId = "httpmime"; groupId = "org.apache.httpcomponents"; - version = "4.1"; + version = "4.5.6"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "31629566148e8a47688ae43b420abc3ecd783ed15b33bebc00824bf24c9b15aa"; - pomSha256 = "db3cd95bec1001605e1653f2843e8542e712fa2bb672fd9c8c1ace86c57673d1"; - aarSha256 = null; } - - { artifactId = "project"; - groupId = "org.apache.httpcomponents"; - version = "4.1.1"; - repo = "https://jcenter.bintray.com/"; - jarSha256 = null; - pomSha256 = "21bb4d44dff54e33a37c11af69859a714202ae00969aab5453eba7276688f8ec"; - aarSha256 = null; } - - { artifactId = "project"; - groupId = "org.apache.httpcomponents"; - version = "7"; - repo = "https://jcenter.bintray.com/"; - jarSha256 = null; - pomSha256 = "3d6eba428555a558de046b5d76eacc1f5a54b4f5f20b84d636ed7aff18aa48c3"; + jarSha256 = "0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e"; + pomSha256 = "dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca"; aarSha256 = null; } { artifactId = "bcpkix-jdk15on"; @@ -783,6 +1351,14 @@ pomSha256 = "8fdc3336e7b01873193ba9c48b87de7d788dc0954d1eb45c322492627a4b5c6e"; aarSha256 = null; } + { artifactId = "checker-qual"; + groupId = "org.checkerframework"; + version = "2.5.2"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a"; + pomSha256 = "dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede"; + aarSha256 = null; } + { artifactId = "codehaus-parent"; groupId = "org.codehaus"; version = "4"; @@ -799,6 +1375,14 @@ pomSha256 = "1879f19a05991e3ed95910b96689333396b0c467a215dc4d1f90018404b72a26"; aarSha256 = null; } + { artifactId = "animal-sniffer-annotations"; + groupId = "org.codehaus.mojo"; + version = "1.17"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "92654f493ecfec52082e76354f0ebf87648dc3d5cec2e3c3cdb947c016747a53"; + pomSha256 = "e956ab5d2eb48fabae12300d0cd2d3294d4a2a41abc2068c23cb4d60ad76cbe5"; + aarSha256 = null; } + { artifactId = "animal-sniffer-parent"; groupId = "org.codehaus.mojo"; version = "1.14"; @@ -807,6 +1391,14 @@ pomSha256 = "f51550a06b1410bd4962cb0e71df0b921a60a7ef47bfa9c4825a14be72316eea"; aarSha256 = null; } + { artifactId = "animal-sniffer-parent"; + groupId = "org.codehaus.mojo"; + version = "1.17"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "18a03df16e2a184c582db7b125633c15fb7714027a84c1b532d72933dc08b81f"; + aarSha256 = null; } + { artifactId = "mojo-parent"; groupId = "org.codehaus.mojo"; version = "34"; @@ -815,6 +1407,14 @@ pomSha256 = "3e395d6fbc43c09a3774cac8694ce527398305ea3fd5492d80e25af27d382a9c"; aarSha256 = null; } + { artifactId = "mojo-parent"; + groupId = "org.codehaus.mojo"; + version = "40"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = null; + pomSha256 = "fc648dcdc404f8bf66e0583914ecf980176618201227bea114fae85043cb755e"; + aarSha256 = null; } + { artifactId = "jaxb-bom"; groupId = "org.glassfish.jaxb"; version = "2.2.11"; @@ -847,6 +1447,14 @@ pomSha256 = "8514cb724b4fca59a5cf272b632e539bd0a0f3cacf1844082d0a173a86406bd8"; aarSha256 = null; } + { artifactId = "jdom2"; + groupId = "org.jdom"; + version = "2.0.6"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5"; + pomSha256 = "47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d"; + aarSha256 = null; } + { artifactId = "annotations"; groupId = "org.jetbrains"; version = "13.0"; @@ -855,36 +1463,84 @@ pomSha256 = "965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397"; aarSha256 = null; } + { artifactId = "kotlin-compiler"; + groupId = "com.android.tools.external.com-intellij"; + version = "26.4.2"; + repo = "https://maven.google.com/"; + jarSha256 = "f97df41a49d2f9ec428d847b0691b55541d4b5d4db19d630cf8dc3f38cd34d4a"; + pomSha256 = "7adec4d67ee1ea6cda230bdd549f275c4a5cf08230c9407f632953adc0e26434"; + aarSha256 = null; } + { artifactId = "kotlin-reflect"; groupId = "org.jetbrains.kotlin"; - version = "1.2.0"; + version = "1.3.31"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "4f48a872bad6e4d9c053f4ad610d11e4012ad7e58dc19a03dd5eb811f36069dd"; - pomSha256 = "f35215da1bed69e3d60735d76221d7012cd1a5bc0a30f6f7421719ada463b4dd"; + jarSha256 = "a0172daf57e511e8e0df9251b508db8aa6b885cdf0c5849addc9b840db4814f0"; + pomSha256 = "521ea7a6923dba027d808da42cb789da43b332988652f209f45ae85b582abaac"; aarSha256 = null; } { artifactId = "kotlin-stdlib"; groupId = "org.jetbrains.kotlin"; - version = "1.2.0"; + version = "1.3.0"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "05cfd9f5ac0b41910703a8925f7211a495909b27a2ffdd1c5106f1689aeafcd4"; - pomSha256 = "ca9778da4afbcd421b09384b257c9de47f610aec5c9165e0209228d25a337a20"; + jarSha256 = "4ff0fcb97f4983b4aaba12668c24ad21b08460915db1b021d8f1d8bee687f21c"; + pomSha256 = "4018b25ecf91e9dec4e240d896b95d12009640e3b1ce9b8efed2323e7ac65b07"; aarSha256 = null; } - { artifactId = "kotlin-stdlib-jre7"; + { artifactId = "kotlin-stdlib"; groupId = "org.jetbrains.kotlin"; - version = "1.2.0"; + version = "1.3.31"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "c7a20fb951d437797afe8980aff6c1e5a03f310c661ba58ba1d4fa90cb0f2926"; - pomSha256 = "2077417c22d3ab7734ce35385e9c3f4721840fa8df925edb19abe3eea8507348"; + jarSha256 = "f38c84326543e66ed4895b20fb3ea0fca527fd5a040e1f49d0946ecf3d2b3b23"; + pomSha256 = "938182555f87aabdaabfa7ea22f29249a801d0882587fdb36efd6b69ab6d9483"; aarSha256 = null; } - { artifactId = "kotlin-stdlib-jre8"; + { artifactId = "kotlin-stdlib-common"; groupId = "org.jetbrains.kotlin"; - version = "1.2.0"; + version = "1.3.11"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "75bdd11bedf5736a5b95bbdb643a8f920a9e801caa20f5335a499fa95dc8f9fc"; + pomSha256 = "501095e7aa12a7e3d18559d1cd7ecc3996205eff1ace83d660706aa5e9d44adf"; + aarSha256 = null; } + + { artifactId = "kotlin-stdlib-common"; + groupId = "org.jetbrains.kotlin"; + version = "1.3.31"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "633524eee6ef1941f7cb1dab7ee3927b0a221ceee9047aeb5515f4cbb990c82a"; - pomSha256 = "6b7a74be21c57056eed1c1606524c3b6381ba091a98925fd934567c4a524ac38"; + jarSha256 = "d6e9c54c1e6c4df21be9395de558665544c6bdc8f8076ea7518f089f82cd34fc"; + pomSha256 = "43f118ba3aa72a531d66d64cdd4223fa612b7fac57030ce9148ffb4a55cc3afc"; + aarSha256 = null; } + + { artifactId = "kotlin-stdlib-jdk7"; + groupId = "org.jetbrains.kotlin"; + version = "1.3.31"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "dbf77e6a5626d941450fdc59cbfe24165858403c12789749a2497265269859a3"; + pomSha256 = "7c9af71bea2bd234d822216cf826ac3960a16a157e69669e5788485ff2800f68"; + aarSha256 = null; } + + { artifactId = "kotlin-stdlib-jdk8"; + groupId = "org.jetbrains.kotlin"; + version = "1.3.11"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "ed00c4c25c44073785b6b9a54d398a25da59f24d53cbf794b31800ea8be48d87"; + pomSha256 = "ad2c80108a6481e236e96eda7eb9570c078429e3daae519137bd5fbce5a9292c"; + aarSha256 = null; } + + { artifactId = "kotlin-stdlib-jdk8"; + groupId = "org.jetbrains.kotlin"; + version = "1.3.31"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "ad6acd219b468a532ac3b3c5aacbfd5db02d0ffcf967e2113e4677e2429490f6"; + pomSha256 = "5cb7c7867f97ce48ef211c79f975b77de5724ac13e0ae27c1da2613929897427"; + aarSha256 = null; } + + { artifactId = "trove4j"; + groupId = "org.jetbrains.trove4j"; + version = "20160824"; + repo = "https://jcenter.bintray.com/"; + jarSha256 = "1917871c8deb468307a584680c87a44572f5a8b0b98c6d397fc0f5f86596dbe7"; + pomSha256 = "5c415a9d8585200de4be1947e15291cc79f599b06249375f5c9ea22d4b2d090f"; aarSha256 = null; } { artifactId = "stax-ex"; @@ -905,50 +1561,50 @@ { artifactId = "asm"; groupId = "org.ow2.asm"; - version = "5.1"; + version = "6.0"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "d2da399a9967c69f0a21739256fa79d284222c223082cacadc17372244764b54"; - pomSha256 = "6d079b5abf39f323baaccc68463beef5cf2e9574f333dd749ae96753f00eb205"; + jarSha256 = "dd8971c74a4e697899a8e95caae4ea8760ea6c486dc6b97b1795e75760420461"; + pomSha256 = "c2bc497e197112e699085426bbb45b1ab0be8002da68267a3b1f450a0312c32e"; aarSha256 = null; } { artifactId = "asm-analysis"; groupId = "org.ow2.asm"; - version = "5.1"; + version = "6.0"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "a34658f5c5de4b573eef21131cc32cc25f7b66407944f312b28ec2e56abb1fa9"; - pomSha256 = "81120db4d5490c4f0e9789e1178d2bac231fcff2618bd80f8ef6ff03c550d59b"; + jarSha256 = "2f1a6387219c3a6cc4856481f221b03bd9f2408a326d416af09af5d6f608c1f4"; + pomSha256 = "d3aaf42e40e3e24aabda53b5de4de5e17cb78e06549bf37312dca6c77e251054"; aarSha256 = null; } { artifactId = "asm-commons"; groupId = "org.ow2.asm"; - version = "5.1"; + version = "6.0"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "97b3786e1f55e74bddf8ad102bf50e33bbcbc1f6b7fd7b36f0bbbb25cd4981be"; - pomSha256 = "cd36b31f1495f4fe55a936dd00607abdd945e1f8074549225a04c402d1d35750"; + jarSha256 = "f1bce5c648a96a017bdcd01fe5d59af9845297fd7b79b81c015a6fbbd9719abf"; + pomSha256 = "90f4f29473afb957229016eb5741954976cc1b67bc049b3981c0d1e653ad5cdd"; aarSha256 = null; } { artifactId = "asm-parent"; groupId = "org.ow2.asm"; - version = "5.1"; + version = "6.0"; repo = "https://jcenter.bintray.com/"; jarSha256 = null; - pomSha256 = "85ec8258fafc283f61647e6a11b404890821c11db6fcf550779ecf7a14151007"; + pomSha256 = "791d064bb9ecc9a46d43bc9efecd74c91464dfc451f321b802d2261e2ccd7d14"; aarSha256 = null; } { artifactId = "asm-tree"; groupId = "org.ow2.asm"; - version = "5.1"; + version = "6.0"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "c0de2bbc4cb8297419659813ecd4ed1d077ed1dd5c1f5544cc5143e493e84c10"; - pomSha256 = "fb5369fc7ea4b2e3cf8d6f20243f1d97f81341bf818b179cd8dbd1da7a781a21"; + jarSha256 = "887998fb69727c8759e4d253f856822801e33f9fd4caa566b3ac58ee92106215"; + pomSha256 = "36887e0d7fdb185a92378a38ea45e596a97f10f385c5d050eb6252454ee701b4"; aarSha256 = null; } { artifactId = "asm-util"; groupId = "org.ow2.asm"; - version = "5.1"; + version = "6.0"; repo = "https://jcenter.bintray.com/"; - jarSha256 = "ee032c39ae5e3cd099148fbba9a2124f9ed613e5cb93e03ee0fa8808ce364040"; - pomSha256 = "0c0e9d1857c250d1d71b5c6be7b8cc29afe55e7419a90d13bbe968ae5bd7240e"; + jarSha256 = "356afebdb0f870175262e5188f8709a3b17aa2a5a6a4b0340b04d4b449bca5f6"; + pomSha256 = "3cdfc61f988d167b97503419da82a5808b20f4205aeb46c394e6e7ffd3211f12"; aarSha256 = null; } { artifactId = "oss-parent"; @@ -967,84 +1623,4 @@ pomSha256 = "fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a"; aarSha256 = null; } - { artifactId = "lint-gradle"; - groupId = "com.android.tools.lint"; - version = "26.1.0"; - repo = "https://maven.google.com/"; - jarSha256 = "1djk56ifhr09f1zp1z9wib8hz2ls42z9iz4qi1v6r3nizvy6m7gc"; - pomSha256 = "1zirnsh5aczryhn1qzyc14pmprkgp5bn5w2wi2ds25bcxaadgx82"; - aarSha256 = null; } - - { artifactId = "intellij-core"; - groupId = "com.android.tools.external.com-intellij"; - version = "26.1.0"; - repo = "https://maven.google.com/"; - jarSha256 = "0qsqs3izdyncy7iw0r71nvmcr5f48cpb8k1j0v2k95pxq7y6ypsf"; - pomSha256 = "1hm700339hn8lr2giy2d75z3v8ai7fp55ylqp8g7n0nlmgplxkkm"; - aarSha256 = null; } - - { artifactId = "kotlin-compiler"; - groupId = "com.android.tools.external.com-intellij"; - version = "26.1.0"; - repo = "https://maven.google.com/"; - jarSha256 = "05xgv51sviqnm6mqhd91psdfgc388gqi1fqkc9x1yrb1ix5ybqly"; - pomSha256 = "12w195c2g4qwn5g3sviw3k0n47riymv7afqk096fr4fzzprg4pc1"; - aarSha256 = null; } - - { artifactId = "uast"; - groupId = "com.android.tools.external.org-jetbrains"; - version = "26.1.0"; - repo = "https://maven.google.com/"; - jarSha256 = "0s9r58kji8448bm6y82wv5hmwq85dx57mbs7ca2pq0xp0yp8n8hs"; - pomSha256 = "0h8c3sq55jiyv2avm6h0xck8lng5x53by0d16frdcbdgz41lxa22"; - aarSha256 = null; } - - { artifactId = "lint"; - groupId = "com.android.tools.lint"; - version = "26.1.0"; - repo = "https://maven.google.com/"; - jarSha256 = "1wf22x4b2agwqkn41fahfhh65vbf07wx40nqnzhr813cmdcc75k0"; - pomSha256 = "0kiglimp65bf1i8ilq4m2hby60cy5dj2kydrbnxnndd9gcklhq0y"; - aarSha256 = null; } - - { artifactId = "lint-checks"; - groupId = "com.android.tools.lint"; - version = "26.1.0"; - repo = "https://maven.google.com/"; - jarSha256 = "1a9afcyyhckm94bp2sf8pxkpv4ww4xhi0ji437f911hbf6ymc5ib"; - pomSha256 = "1miw7fy2njzy7vsk5c92mndn5bs08fmci7216y71jz8zw8kyib0j"; - aarSha256 = null; } - - { artifactId = "lint-kotlin"; - groupId = "com.android.tools.lint"; - version = "26.1.0"; - repo = "https://maven.google.com/"; - jarSha256 = "0g6shynra9gakq04lhzpsypdl43gxmgiyflicagl2z1ikncbs9rq"; - pomSha256 = "0ssxy0ymdfy4nvw19hnr930jf5my4h3h7zl1kwn95q301cvasdl3"; - aarSha256 = null; } - - { artifactId = "lint-api"; - groupId = "com.android.tools.lint"; - version = "26.1.0"; - repo = "https://maven.google.com/"; - jarSha256 = "1sq2jvjrmwa3mw7q8ynfnjwbskbzxvbfwxk1pf2m2wx58c8npazh"; - pomSha256 = "088vnf5ibfs960i90wx2z5v76w6kjndv4i4swzg99gj4gqnx05cx"; - aarSha256 = null; } - - { artifactId = "groovy-all"; - groupId = "org.codehaus.groovy"; - version = "2.4.12"; - repo = "https://jcenter.bintray.com/"; - jarSha256 = "1r4bndr8vappv386pk30fc0gvynyr9v1i0k2ximxa0w9si5symka"; - pomSha256 = "0g6xvsi4zmd26bgbl59ql5638qrfzk9zfr3fnh7ixcqpvb415kd8"; - aarSha256 = null; } - - { artifactId = "trove4j"; - groupId = "org.jetbrains.trove4j"; - version = "20160824"; - repo = "https://jcenter.bintray.com/"; - jarSha256 = "1ryvjrjzixf0gwwnv35rn2lgawj5lj3hqs44ll3q6ipbilf8f5qr"; - pomSha256 = "03q95m5jv8lybigkfjb2n2czayfcj59f2iqrpvj0s845hnfmlhaw"; - aarSha256 = null; } - ] diff --git a/android/defaults/pom.xml b/android/defaults/pom.xml index 3681bd5fe..90b0ae3c6 100644 --- a/android/defaults/pom.xml +++ b/android/defaults/pom.xml @@ -30,7 +30,57 @@ com.android.tools.build gradle - 3.1.0 + 3.4.2 + + + com.google.gms + google-services + 4.3.3 + + + com.google.firebase + firebase-iid + 20.2.3 + aar + + + com.google.firebase + firebase-messaging + 20.2.3 + aar + + + + com.google.protobuf + protobuf-bom + 3.10.0 + pom + + + com.google.guava + listenablefuture + 9999.0-empty-to-avoid-conflict-with-guava + + + org.jetbrains.kotlin + kotlin-stdlib-common + 1.3.11 + + + org.codehaus.mojo + animal-sniffer-annotations + 1.17 + provided + + + org.checkerframework + checker-qual + 2.5.2 + + + com.google.guava + failureaccess + 1.0.1 diff --git a/android/impl.nix b/android/impl.nix index a4d7f55ee..81eb7e1ee 100644 --- a/android/impl.nix +++ b/android/impl.nix @@ -28,19 +28,15 @@ let overrideAndroidCabal = package: overrideCabal package (drv: { inherit (nixpkgs.lib) splitString escapeShellArg mapAttrs attrNames concatStrings optionalString; in { buildApp = args: with args; addDeployScript (buildGradleApp { - inherit acceptAndroidSdkLicenses; + inherit acceptAndroidSdkLicenses mavenDeps; buildDirectory = "./."; - # Can be "assembleRelease" or "assembleDebug" (to build release or debug) or "assemble" (to build both) - gradleTask = if isRelease - then "assembleRelease" - else "assembleDebug"; + inherit gradleTask; keyAlias = releaseKey.keyAlias or null; keyAliasPassword = releaseKey.keyPassword or null; keyStore = releaseKey.storeFile or null; keyStorePassword = releaseKey.storePassword or null; - mavenDeps = import ./defaults/deps.nix; name = applicationId; - platformVersions = [ "28" ]; + platformVersions = [ "29" ]; release = false; src = let splitApplicationId = splitString "." applicationId; @@ -62,12 +58,12 @@ in { buildGradle = builtins.toFile "build.gradle" (import ./build.gradle.nix { inherit applicationId version additionalDependencies releaseKey universalApk; googleServicesClasspath = optionalString (googleServicesJson != null) - "classpath 'com.google.gms:google-services:3.0.0'"; + "classpath 'com.google.gms:google-services:4.3.3'"; googleServicesPlugin = optionalString (googleServicesJson != null) "apply plugin: 'com.google.gms.google-services'"; }); androidManifestXml = builtins.toFile "AndroidManifest.xml" (import ./AndroidManifest.xml.nix { - inherit applicationId version iconPath intentFilters services permissions activityAttributes; + inherit applicationId version iconPath intentFilters services permissions activityAttributes usesCleartextTraffic; }); stringsXml = builtins.toFile "strings.xml" (import ./strings.xml.nix { inherit displayName; @@ -95,7 +91,7 @@ in { ln -s "$stringsXml" "$out/res/values/strings.xml" mkdir -p "$out/jni" ln -s "$applicationMk" "$out/jni/Application.mk" - + ${optionalString (googleServicesJson != null) ''cp '${googleServicesJson}' "$out/google-services.json"''} '' + concatStrings (builtins.map (arch: let inherit (appSOs.${arch}) hsApp sharedLibs; diff --git a/android/src/gradle.properties b/android/src/gradle.properties index b2f2597a8..57d35b727 100644 --- a/android/src/gradle.properties +++ b/android/src/gradle.properties @@ -17,3 +17,6 @@ org.gradle.jvmargs=-Xmx8192m # org.gradle.parallel=true android.enableBuildCache=false + +android.aapt2FromMavenOverride=local_sdk/android-sdk/build-tools/28.0.3/aapt2 +android.enableR8=false diff --git a/android/src/proguard.txt b/android/src/proguard.txt new file mode 100644 index 000000000..7de12a457 --- /dev/null +++ b/android/src/proguard.txt @@ -0,0 +1,6 @@ +-dontoptimize +-dontshrink +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-dontpreverify +-verbose diff --git a/default.nix b/default.nix index 0a7834ea1..13d73951d 100644 --- a/default.nix +++ b/default.nix @@ -8,7 +8,7 @@ , useReflexOptimizer ? false , useTextJSString ? true # Use an implementation of "Data.Text" that uses the more performant "Data.JSString" from ghcjs-base under the hood. , __useTemplateHaskell ? true # Deprecated, just here until we remove feature from reflex and stop CIing it -, iosSdkVersion ? "10.2" +, iosSdkVersion ? "13.2" , nixpkgsOverlays ? [] , haskellOverlays ? [] # TODO deprecate , haskellOverlaysPre ? [] @@ -18,6 +18,10 @@ let iosSupport = system == "x86_64-darwin"; androidSupport = lib.elem system [ "x86_64-linux" ]; + xcodeVer = { + "13.2" = "11.3.1"; + }.${iosSdkVersion} or (throw "Unknown iosSdkVersion: ${iosSdkVersion}"); + # Overlay for GHC with -load-splices & -save-splices option splicesEval = self: super: { haskell = super.haskell // { @@ -132,16 +136,19 @@ let iosSupport = system == "x86_64-darwin"; simulator64 = { crossSystem = lib.systems.examples.iphone64-simulator // { sdkVer = iosSdkVersion; + inherit xcodeVer; }; }; aarch64 = { crossSystem = lib.systems.examples.iphone64 // { sdkVer = iosSdkVersion; + inherit xcodeVer; }; }; aarch32 = { crossSystem = lib.systems.examples.iphone32 // { sdkVer = iosSdkVersion; + inherit xcodeVer; }; }; # Back compat @@ -278,6 +285,9 @@ let iosSupport = system == "x86_64-darwin"; iosAarch64-8_6 = iosWithHaskellPackages ghcIosAarch64-8_6; iosAarch32 = iosWithHaskellPackages ghcIosAarch32; iosAarch32-8_6 = iosWithHaskellPackages ghcIosAarch32-8_6; + iosSimulator = { + buildApp = nixpkgs.lib.makeOverridable (import ./ios { inherit nixpkgs; ghc = ghcIosSimulator64; withSimulator = true; }); + }; iosWithHaskellPackages = ghc: { buildApp = nixpkgs.lib.makeOverridable (import ./ios { inherit nixpkgs ghc; }); }; @@ -310,6 +320,7 @@ in let this = rec { androidWithHaskellPackages iosAarch32 iosAarch64 + iosSimulator iosWithHaskellPackages wasm wasmCross @@ -345,6 +356,12 @@ in let this = rec { bundleIdentifier = "org.reflexfrp.todomvc.via_8_6"; bundleName = "Reflex TodoMVC via GHC 8.6"; }; + iosSimulatorReflexTodomvc = iosSimulator.buildApp { + package = p: p.reflex-todomvc; + executableName = "reflex-todomvc"; + bundleIdentifier = "org.reflexfrp.todomvc"; + bundleName = "Reflex TodoMVC"; + }; setGhcLibdir = ghcLibdir: inputGhcjs: let libDir = "$out/lib/ghcjs-${inputGhcjs.version}"; ghcLibdirLink = nixpkgs.stdenv.mkDerivation { @@ -446,14 +463,17 @@ in let this = rec { let otherPlatforms = lib.optionals androidSupport [ "ghcAndroidAarch64" "ghcAndroidAarch32" - ] ++ lib.optional iosSupport "ghcIosAarch64"; + ] ++ lib.optionals iosSupport [ + "ghcIosAarch64" + "ghcIosSimulator64" + ]; in tryReflexPackages ++ builtins.map reflexEnv otherPlatforms ++ lib.optionals androidSupport [ androidDevTools androidReflexTodomvc ] ++ lib.optionals iosSupport [ - iosReflexTodomvc + iosReflexTodomvc iosSimulatorReflexTodomvc ]; inherit cabal2nixResult system androidSupport iosSupport; diff --git a/haskell-overlays/android/dep/android-activity/github.json b/haskell-overlays/android/dep/android-activity/github.json index 907b4d5fe..b92dd2569 100644 --- a/haskell-overlays/android/dep/android-activity/github.json +++ b/haskell-overlays/android/dep/android-activity/github.json @@ -1,7 +1,8 @@ { "owner": "obsidiansystems", "repo": "android-activity", + "branch": "eac@port-firebase", "private": false, - "rev": "77f4cf9000beac3d94c61f63fddb3155701bac54", - "sha256": "0asbw3r79srd7qdn5i2qcgyif5097r8w7i3k39515vb6512v8ams" + "rev": "40fe4f9fb145b72bfee1f7d7fa0442523a11a798", + "sha256": "1rn2x7nc21b4sbfghk72c79s5a8ya5pi0qwfyjyf4dqv55b6c5zw" } diff --git a/ios/default.nix b/ios/default.nix index f318fe5e9..60d5777c3 100644 --- a/ios/default.nix +++ b/ios/default.nix @@ -1,4 +1,4 @@ -{ nixpkgs, ghc }: +{ nixpkgs, ghc, withSimulator ? false }: { #TODO bundleName @@ -70,6 +70,7 @@ let ]; ${"CFBundleIcons~ipad"} = { CFBundlePrimaryIcon = { + CFBundleIconName = "Icon"; CFBundleIconFiles = [ "Icon-60" "Icon-76" @@ -79,21 +80,23 @@ let }; CFBundleIcons = { CFBundlePrimaryIcon = { + CFBundleIconName = "Icon"; CFBundleIconFiles = [ "Icon-60" ]; }; }; - DTSDKName = "iphoneos10.2"; - DTXcode = "0821"; - DTSDKBuild = "14C89"; - BuildMachineOSBuild = "16D32"; + + DTSDKName = "iphoneos13.2"; + DTXcode = "1130"; # XCode 11.3.1 + DTXcodeBuild = "11C505"; + DTSDKBuild = "17B102"; # iOS 13.2 + BuildMachineOSBuild = "19G73"; # Catalina DTPlatformName = "iphoneos"; DTCompiler = "com.apple.compilers.llvm.clang.1_0"; MinimumOSVersion = "10.2"; - DTXcodeBuild = "8C1002"; - DTPlatformVersion = "10.2"; - DTPlatformBuild = "14C89"; + DTPlatformVersion = "13.2"; + DTPlatformBuild = "17B102"; # iOS 13.2 NSPhotoLibraryUsageDescription = "Allow access to photo library."; NSCameraUsageDescription = "Allow access to camera."; }; @@ -103,23 +106,10 @@ let else abort '' `extraInfoPlistContent` has been removed. Instead use `overrideInfoPlist` to provide an override function that modifies the default info.plist data as a nix attrset. For example: `(x: x // {NSCameraUsageDescription = "We need your camera.";})` ''; + exePath = package ghc; in nixpkgs.runCommand "${executableName}-app" (rec { - exePath = package ghc; infoPlist = builtins.toFile "Info.plist" (nixpkgs.lib.generators.toPlist {} infoPlistData); - resourceRulesPlist = builtins.toFile "ResourceRules.plist" (nixpkgs.lib.generators.toPlist {} { - rules = { - ".*" = true; - "Info.plist" = { - omit = true; - weight = 10; - }; - "ResourceRules.plist" = { - omit = true; - weight = 100; - }; - }; - }); indexHtml = builtins.toFile "index.html" '' @@ -141,7 +131,7 @@ nixpkgs.runCommand "${executableName}-app" (rec { #!/usr/bin/env bash set -eo pipefail - if (( "$#" < 1 )); then + if [ "$#" -ne 1 ]; then echo "Usage: $0 [TEAM_ID]" >&2 exit 1 fi @@ -181,19 +171,19 @@ nixpkgs.runCommand "${executableName}-app" (rec { mkdir -p $tmpdir cp -LR "$(dirname $0)/../${executableName}.app" $tmpdir - chmod +w "$tmpdir/${executableName}.app" - chmod +w "$tmpdir/${executableName}.app/${executableName}" + chmod -R +w "$tmpdir/${executableName}.app" mkdir -p "$tmpdir/${executableName}.app/config" sed "s||$TEAM_ID|" < "${xcent}" > $tmpdir/xcent /usr/bin/codesign --force --sign "$signer" --entitlements $tmpdir/xcent --timestamp=none "$tmpdir/${executableName}.app" - ${nixpkgs.nodePackages.ios-deploy}/bin/ios-deploy -W -b "$tmpdir/${executableName}.app" "$@" + deploy="''${IOS_DEPLOY:-${nixpkgs.darwin.ios-deploy}/bin/ios-deploy}" + $deploy -W -b "$tmpdir/${executableName}.app" "$@" ''; packageScript = nixpkgs.writeText "package" '' #!/usr/bin/env bash set -eo pipefail - if (( "$#" != 3 )); then + if [ "$#" -lt 3 ]; then echo "Usage: $0 [TEAM_ID] [IPA_DESTINATION] [EMBEDDED_PROVISIONING_PROFILE]" >&2 exit 1 fi @@ -237,20 +227,26 @@ nixpkgs.runCommand "${executableName}-app" (rec { mkdir -p $tmpdir cp -LR "$(dirname $0)/../${executableName}.app" $tmpdir - chmod +w "$tmpdir/${executableName}.app" - chmod +rw "$tmpdir/${executableName}.app/${executableName}" + chmod -R +w "$tmpdir/${executableName}.app" strip "$tmpdir/${executableName}.app/${executableName}" mkdir -p "$tmpdir/${executableName}.app/config" sed "s||$TEAM_ID|" < "${xcent}" > $tmpdir/xcent /usr/bin/codesign --force --sign "$signer" --entitlements $tmpdir/xcent --timestamp=none "$tmpdir/${executableName}.app" /usr/bin/xcrun -sdk iphoneos ${./PackageApplication} -v "$tmpdir/${executableName}.app" -o "$IPA_DESTINATION" --sign "$signer" --embed "$EMBEDDED_PROVISIONING_PROFILE" - /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool --validate-app -f "$IPA_DESTINATION" -t ios "$@" + + altool=/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool + + if ! [ -x "$altool" ]; then + altool=/Applications/Xcode.app/Contents/Developer/usr/bin/altool + fi + + "$altool" --validate-app -f "$IPA_DESTINATION" -t ios "$@" ''; runInSim = builtins.toFile "run-in-sim" '' #!/usr/bin/env bash - if (( "$#" != 0 )); then + if [ "$#" -ne 0 ]; then echo "Usage: $0" >&2 exit 1 fi @@ -271,30 +267,99 @@ nixpkgs.runCommand "${executableName}-app" (rec { mkdir -p $tmpdir cp -LR "$(dirname $0)/../${executableName}.app" $tmpdir - chmod +w "$tmpdir/${executableName}.app" + chmod -R +w "$tmpdir/${executableName}.app" mkdir -p "$tmpdir/${executableName}.app/config" - cp "$1" "$tmpdir/${executableName}.app/config/route" - - # focus???? - focus/reflex-platform/scripts/run-in-ios-sim "$tmpdir/${executableName}.app" + ${../scripts/run-in-ios-sim} "$tmpdir/${executableName}.app" "${bundleIdentifier}" ''; -}) '' + portableDeployScript = nixpkgs.writeText "make-portable-deploy" '' + #!/usr/bin/env bash + set -eo pipefail + + if [ "$#" -ne 1 ]; then + echo "Usage: $0 [TEAM_ID]" >&2 + exit 1 + fi + + TEAM_ID=$1 + shift + + set -euo pipefail + + function cleanup { + if [ -n "$tmpdir" -a -d "$tmpdir" ]; then + echo "Cleaning up tmpdir" >&2 + chmod -R +w $tmpdir + rm -fR $tmpdir + fi + } + + trap cleanup EXIT + + tmpdir=$(mktemp -d) + # Find the signer given the OU + signer=$({ security find-certificate -c 'iPhone Developer' -a; security find-certificate -c 'Apple Development' -a; } \ + | grep '^ "alis"="' \ + | sed 's| "alis"="\(.*\)"$|\1|' \ + | while read c; do \ + security find-certificate -c "$c" -p \ + | ${nixpkgs.libressl}/bin/openssl x509 -subject -noout; \ + done \ + | grep "OU[[:space:]]\?=[[:space:]]\?$TEAM_ID" \ + | sed 's|subject= /UID=[^/]*/CN=\([^/]*\).*|\1|' \ + | head -n 1 || true) + + if [ -z "$signer" ]; then + echo "Error: No iPhone Developer certificate found for team id $TEAM_ID" >&2 + exit 1 + fi + + dir="$tmpdir/${executableName}-${bundleVersion}" + mkdir $dir + + cp -LR "$(dirname $0)/../${executableName}.app" $dir + chmod -R +w "$dir/${executableName}.app" + mkdir -p "$dir/${executableName}.app/config" + sed "s||$TEAM_ID|" < "${xcent}" > $dir/xcent + /usr/bin/codesign --force --sign "$signer" --entitlements $dir/xcent --timestamp=none "$dir/${executableName}.app" + + # unsure if we can sign with same key as for iOS app, may need special permissions + cp ${nixpkgs.darwin.ios-deploy}/bin/ios-deploy $dir/ios-deploy + /usr/bin/codesign --force --sign "$signer" --timestamp=none "$dir/ios-deploy" + + cat >$dir/deploy <<'EOF' +#!/usr/bin/env bash +DIR="$( cd "$( dirname "''${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +"$DIR/ios-deploy" -W -b "$DIR/${executableName}.app" "$@" +EOF + chmod +x $dir/deploy + + dest=$PWD/${executableName}-${bundleVersion}.tar.gz + (cd $tmpdir && tar cfz $dest ${executableName}-${bundleVersion}/) + + echo Created $dest. + '';}) ('' set -x mkdir -p "$out/${executableName}.app" ln -s "$infoPlist" "$out/${executableName}.app/Info.plist" - ln -s "$resourceRulesPlist" "$out/${executableName}.app/ResourceRules.plist" ln -s "$indexHtml" "$out/${executableName}.app/index.html" mkdir -p "$out/bin" cp --no-preserve=mode "$deployScript" "$out/bin/deploy" chmod +x "$out/bin/deploy" cp --no-preserve=mode "$packageScript" "$out/bin/package" chmod +x "$out/bin/package" +'' + nixpkgs.lib.optionalString withSimulator '' cp --no-preserve=mode "$runInSim" "$out/bin/run-in-sim" chmod +x "$out/bin/run-in-sim" - ln -s "$exePath/bin/${executableName}" "$out/${executableName}.app/" - cp -RL "${staticSrc}"/* "$out/${executableName}.app/" - for icon in "${staticSrc}"/assets/Icon*.png; do +'' + '' + cp --no-preserve=mode "$portableDeployScript" "$out/bin/make-portable-deploy" + chmod +x "$out/bin/make-portable-deploy" + cp "${exePath}/bin/${executableName}" "$out/${executableName}.app/" + cp -RL '${staticSrc}'/* "$out/${executableName}.app/" + for icon in '${staticSrc}'/assets/Icon*.png '${staticSrc}'/assets/AppIcon*.png; do cp -RL "$icon" "$out/${executableName}.app/" done + for splash in '${staticSrc}'/assets/Default*.png; do + cp -RL "$splash" "$out/${executableName}.app/" + done set +x -'' +'') diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 3d7a72224..06fbe0d64 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -1,8 +1,8 @@ { "owner": "obsidiansystems", "repo": "nixpkgs", - "branch": "reflex-platform-wasm-support", + "branch": "reflex-platform", "private": false, - "rev": "a5cc7b77c090ede3ac380962ea876b83d847592c", - "sha256": "0mfrfrgkc8bfc3hcnbzqmab021i3w27mczak99ab4ca154ml297i" + "rev": "e6e5ff9cb3529b6de75e5d217222086de17e093a", + "sha256": "0qwrqilfn11sqlgsdrn99a623kxxxcbcy2acv9pmd620jvgmx0p9" } diff --git a/release.nix b/release.nix index c5ca3b2e8..2898ec016 100644 --- a/release.nix +++ b/release.nix @@ -91,8 +91,7 @@ let }; skeleton-test-project-android = skeleton-test.project.android; } // lib.optionalAttrs (reflex-platform.iosSupport) { - inherit (reflex-platform) iosReflexTodomvc; - inherit (reflex-platform) iosReflexTodomvc-8_6; + inherit (reflex-platform) iosReflexTodomvc iosReflexTodomvc-8_6 iosSimulatorReflexTodomvc; skeleton-test-project-ios = skeleton-test.project.ios; } // drvListToAttrs otherDeps # TODO fix GHCJS profiling builds diff --git a/scripts/run-in-ios-sim b/scripts/run-in-ios-sim index 3a4a13696..8b6a1552d 100755 --- a/scripts/run-in-ios-sim +++ b/scripts/run-in-ios-sim @@ -1,7 +1,18 @@ -#!/usr/bin/env bash +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p jq + set -euo pipefail -uuid="$(xcrun simctl create reflex-todomvc com.apple.CoreSimulator.SimDeviceType.iPhone-7 com.apple.CoreSimulator.SimRuntime.iOS-10-2)" +name="${1##*/}" +name="${name%.app}" + +bundleIdentifier="$name" +if [ "$#" = 2 ]; then + bundleIdentifier="$2" +fi + +runtime="$(xcrun simctl list runtimes -j | jq -r '.runtimes[].identifier' | head -n1)" +uuid="$(xcrun simctl create "$name" com.apple.CoreSimulator.SimDeviceType.iPhone-8 "$runtime")" function cleanup { if [ -n "$uuid" ]; then @@ -12,10 +23,12 @@ function cleanup { } trap cleanup EXIT -name="${1##*/}" -name="${name%.app}" - +echo Opening Simulator... >&2 open -a Simulator --args -CurrentDeviceUDID "$uuid" -sleep 5 +sleep 20 + +echo Installing "$name".app >&2 xcrun simctl install "$uuid" "$1" -xcrun simctl launch --console "$uuid" "$name" + +echo Launching "$name" >&2 +xcrun simctl launch --console "$uuid" "$bundleIdentifier" diff --git a/scripts/run-todomvc-in-ios-sim.sh b/scripts/run-todomvc-in-ios-sim.sh index 43d08b202..49e026f97 100755 --- a/scripts/run-todomvc-in-ios-sim.sh +++ b/scripts/run-todomvc-in-ios-sim.sh @@ -2,7 +2,8 @@ set -euo pipefail function cleanup { - if [ -n "$uuid" ]; then + # alternative to [ -v ] for bash prior to 4.2 + if [ -n "${uuid-}" ]; then echo "Cleaning up simulator" >&2 xcrun simctl shutdown $uuid 2>/dev/null xcrun simctl delete $uuid @@ -13,7 +14,7 @@ trap cleanup EXIT nix-build -A ghcIosSimulator64.reflex-todomvc -uuid=$(xcrun simctl create reflex-todomvc com.apple.CoreSimulator.SimDeviceType.iPhone-7 com.apple.CoreSimulator.SimRuntime.iOS-10-2) +uuid=$(xcrun simctl create reflex-todomvc com.apple.CoreSimulator.SimDeviceType.iPhone-8 com.apple.CoreSimulator.SimRuntime.iOS-13-2) open -a Simulator --args -CurrentDeviceUDID $uuid xcrun simctl install $uuid `nix-build -A ghcIosSimulator64.reflex-todomvc`/reflex-todomvc.app xcrun simctl launch --console $uuid reflex-todomvc