From 77699c42d900a639d8725936de87a15286dd332b Mon Sep 17 00:00:00 2001 From: Thales Machado Date: Mon, 5 Nov 2018 15:56:29 +0100 Subject: [PATCH] Jetifier support (#749) --- another-app/build.gradle | 3 +- another-app/proguard-android.txt | 30 ----- .../okbuck/example/anotherapp/CustomView.java | 2 +- .../example/anotherapp/MainActivity.java | 4 +- app/build.gradle | 12 +- app/src/androidTest/AndroidManifest.xml | 2 +- .../okbuck/example/test/MainActivityTest.java | 12 +- .../com/uber/okbuck/example/AppShell.java | 2 +- .../example/CollapsingAppBarActivity.java | 13 +- .../com/uber/okbuck/example/CustomView.java | 2 +- .../com/uber/okbuck/example/MainActivity.java | 8 +- .../java/com/uber/okbuck/example/MyApp.java | 2 +- .../layout/activity_collapsing_app_bar.xml | 10 +- app/src/main/res/layout/activity_main.xml | 2 +- build.gradle | 29 +++-- .../com/uber/okbuck/OkBuckGradlePlugin.java | 13 +- .../android/AndroidLibraryRuleComposer.java | 2 +- .../ExopackageAndroidLibraryRuleComposer.java | 2 +- .../okbuck/core/manager/GroovyManager.java | 2 +- .../okbuck/core/manager/JetifierManager.java | 116 ++++++++++++++++++ .../uber/okbuck/core/model/base/RuleType.java | 19 ++- .../com/uber/okbuck/core/task/OkBuckTask.java | 3 + .../okbuck/extension/JetifierExtension.java | 13 ++ .../okbuck/extension/OkBuckExtension.java | 12 +- .../util/jetifier/jetifier-standalone.jar | Bin 0 -> 16338 bytes .../template/config/BuckDefs.rocker.raw | 27 ++++ dependencies.gradle | 32 ++--- gradle.properties | 2 + kotlin-app/build.gradle | 16 ++- .../src/androidTest/AndroidManifest.xml | 2 +- .../uber/okbuck/example/MainActivityTest.kt | 2 +- .../com/uber/okbuck/example/MainActivity.kt | 5 + .../example/sqldelightmodel/GithubRepo.java | 2 +- .../example/sqldelightmodel/GithubUser.java | 2 +- .../src/main/res/layout/activity_main.xml | 12 +- .../src/main/res/layout/content_main.xml | 4 +- .../example/sqldelightmodel/GithubRepo.sq | 0 .../example/sqldelightmodel/GithubUser.sq | 0 libraries/common/build.gradle | 2 +- libraries/emptylibrary/build.gradle | 4 +- libraries/javalibrary/build.gradle | 2 +- libraries/kotlinandroidlibrary/build.gradle | 8 +- .../src/androidTest/AndroidManifest.xml | 2 +- .../uber/okbuck/java/KotlinLibActivityTest.kt | 12 +- .../com/uber/okbuck/java/KotlinLibActivity.kt | 4 +- .../main/res/layout/activity_kotlin_lib.xml | 12 +- .../main/res/layout/content_kotlin_lib.xml | 4 +- libraries/lintErrorLibrary/build.gradle | 2 +- 48 files changed, 330 insertions(+), 143 deletions(-) create mode 100644 buildSrc/src/main/java/com/uber/okbuck/core/manager/JetifierManager.java create mode 100644 buildSrc/src/main/java/com/uber/okbuck/extension/JetifierExtension.java create mode 100644 buildSrc/src/main/resources/com/uber/okbuck/core/util/jetifier/jetifier-standalone.jar create mode 100644 gradle.properties rename {app => kotlin-app}/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubRepo.java (87%) rename {app => kotlin-app}/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubUser.java (87%) rename {app => kotlin-app}/src/main/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubRepo.sq (100%) rename {app/src/dev => kotlin-app/src/main}/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubUser.sq (100%) diff --git a/another-app/build.gradle b/another-app/build.gradle index 8c7575874..3d3f04998 100644 --- a/another-app/build.gradle +++ b/another-app/build.gradle @@ -34,8 +34,7 @@ android { } dependencies { - implementation deps.support.appCompat - implementation deps.support.v4 + implementation deps.androidx.appCompat implementation project(":libraries:javalibrary") implementation project(":libraries:emptylibrary") implementation project(":libraries:parcelable") diff --git a/another-app/proguard-android.txt b/another-app/proguard-android.txt index 86fd3765d..22f5cb6d2 100644 --- a/another-app/proguard-android.txt +++ b/another-app/proguard-android.txt @@ -27,13 +27,6 @@ -keepattributes SourceFile,LineNumberTable -renamesourcefileattribute SourceFile --keep public class com.google.vending.licensing.ILicensingService --keep public class com.android.vending.licensing.ILicensingService --keep public class com.google.android.vending.licensing.ILicensingService --dontnote com.android.vending.licensing.ILicensingService --dontnote com.google.vending.licensing.ILicensingService --dontnote com.google.android.vending.licensing.ILicensingService - # For native methods, see http://proguard.sourceforge.net/manual/examples.html#native -keepclasseswithmembernames class * { native ; @@ -73,27 +66,4 @@ @android.webkit.JavascriptInterface ; } -# The support libraries contains references to newer platform versions. -# Don't warn about those in case this app is linking against an older -# platform version. We know about them, and they are safe. --dontnote android.support.** --dontwarn android.support.** - -# Understand the @Keep support annotation. --keep class android.support.annotation.Keep - --keep @android.support.annotation.Keep class * {*;} - --keepclasseswithmembers class * { - @android.support.annotation.Keep ; -} - --keepclasseswithmembers class * { - @android.support.annotation.Keep ; -} - --keepclasseswithmembers class * { - @android.support.annotation.Keep (...); -} - -dontwarn java.lang.invoke.** diff --git a/another-app/src/com/uber/okbuck/example/anotherapp/CustomView.java b/another-app/src/com/uber/okbuck/example/anotherapp/CustomView.java index 65112a06a..776dd15db 100644 --- a/another-app/src/com/uber/okbuck/example/anotherapp/CustomView.java +++ b/another-app/src/com/uber/okbuck/example/anotherapp/CustomView.java @@ -1,7 +1,7 @@ package com.uber.okbuck.example.anotherapp; import android.content.Context; -import android.support.v7.widget.AppCompatTextView; +import androidx.appcompat.widget.AppCompatTextView; import android.util.AttributeSet; public class CustomView extends AppCompatTextView { diff --git a/another-app/src/com/uber/okbuck/example/anotherapp/MainActivity.java b/another-app/src/com/uber/okbuck/example/anotherapp/MainActivity.java index 46be165a8..3a5ba7116 100644 --- a/another-app/src/com/uber/okbuck/example/anotherapp/MainActivity.java +++ b/another-app/src/com/uber/okbuck/example/anotherapp/MainActivity.java @@ -1,7 +1,7 @@ package com.uber.okbuck.example.anotherapp; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -27,7 +27,7 @@ protected void onCreate(Bundle savedInstanceState) { } void mTvTest() { - Log.d("TEST", "" + android.support.v7.appcompat.R.color.button_material_light); + Log.d("TEST", "" + androidx.appcompat.R.color.button_material_light); mTvTest.setText( new StringBuilder() .append("1 + 2 = ") diff --git a/app/build.gradle b/app/build.gradle index 2489e7f3d..2555a6998 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,5 @@ apply plugin: "com.android.application" apply plugin: "com.jakewharton.butterknife" -apply plugin: "com.squareup.sqldelight" android { defaultConfig { @@ -9,7 +8,7 @@ android { buildConfigField "boolean", "CAN_JUMP", "true" buildConfigField "boolean", "XLOG_ENABLED", "true" buildConfigField "int", "EXOPACKAGE_FLAGS", "0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // If app doesn"t specify dimensions, use missingDimensionStrategy // https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#resolve_matching_errors @@ -61,10 +60,10 @@ dependencies { implementation deps.external.rxjava implementation deps.external.rxandroid implementation deps.external.rxPermissions - implementation deps.support.multidex + implementation deps.androidx.multidex implementation deps.external.butterKnife - implementation deps.support.design - implementation deps.support.recyclerView + implementation deps.androidx.material + implementation deps.androidx.recyclerView implementation deps.external.leakCanary implementation deps.external.xlogAndroidIdle @@ -80,9 +79,10 @@ dependencies { testImplementation deps.test.junit testImplementation deps.test.mockito - testImplementation deps.support.annotations + testImplementation deps.androidx.annotations androidTestImplementation deps.test.espressoCore + androidTestImplementation deps.test.espressoRules androidTestImplementation deps.test.espressoRunner } diff --git a/app/src/androidTest/AndroidManifest.xml b/app/src/androidTest/AndroidManifest.xml index f87715f0e..94723807d 100644 --- a/app/src/androidTest/AndroidManifest.xml +++ b/app/src/androidTest/AndroidManifest.xml @@ -3,7 +3,7 @@ diff --git a/app/src/androidTest/java/com/uber/okbuck/example/test/MainActivityTest.java b/app/src/androidTest/java/com/uber/okbuck/example/test/MainActivityTest.java index 882bd07f5..fe802f5be 100644 --- a/app/src/androidTest/java/com/uber/okbuck/example/test/MainActivityTest.java +++ b/app/src/androidTest/java/com/uber/okbuck/example/test/MainActivityTest.java @@ -1,13 +1,13 @@ package com.uber.okbuck.example.test; -import static android.support.test.espresso.Espresso.onView; -import static android.support.test.espresso.assertion.ViewAssertions.matches; -import static android.support.test.espresso.matcher.ViewMatchers.withId; -import static android.support.test.espresso.matcher.ViewMatchers.withText; +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static androidx.test.espresso.matcher.ViewMatchers.withText; import static junit.framework.Assert.assertEquals; -import android.support.test.rule.ActivityTestRule; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; import com.uber.okbuck.example.MainActivity; import com.uber.okbuck.example.R; import org.junit.Rule; diff --git a/app/src/main/java/com/uber/okbuck/example/AppShell.java b/app/src/main/java/com/uber/okbuck/example/AppShell.java index cc85c6f82..bf669bc67 100644 --- a/app/src/main/java/com/uber/okbuck/example/AppShell.java +++ b/app/src/main/java/com/uber/okbuck/example/AppShell.java @@ -1,6 +1,6 @@ package com.uber.okbuck.example; -import android.support.multidex.MultiDex; +import androidx.multidex.MultiDex; import android.widget.Toast; import com.facebook.buck.android.support.exopackage.ExopackageApplication; import com.uber.okbuck.example.common.Calc; diff --git a/app/src/main/java/com/uber/okbuck/example/CollapsingAppBarActivity.java b/app/src/main/java/com/uber/okbuck/example/CollapsingAppBarActivity.java index 3a0e93654..c41f76550 100644 --- a/app/src/main/java/com/uber/okbuck/example/CollapsingAppBarActivity.java +++ b/app/src/main/java/com/uber/okbuck/example/CollapsingAppBarActivity.java @@ -2,11 +2,12 @@ import android.content.Context; import android.os.Bundle; -import android.support.design.widget.AppBarLayout; -import android.support.design.widget.CoordinatorLayout; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,6 +15,8 @@ import android.widget.TextView; import android.widget.Toast; +import com.google.android.material.appbar.AppBarLayout; + public class CollapsingAppBarActivity extends AppCompatActivity { private final float APP_BAR_AUTO_COLLAPSE_RATION = 0.3F; RecyclerView mRecyclerView; diff --git a/app/src/main/java/com/uber/okbuck/example/CustomView.java b/app/src/main/java/com/uber/okbuck/example/CustomView.java index 01aec8917..7cbf8d8cb 100644 --- a/app/src/main/java/com/uber/okbuck/example/CustomView.java +++ b/app/src/main/java/com/uber/okbuck/example/CustomView.java @@ -1,7 +1,7 @@ package com.uber.okbuck.example; import android.content.Context; -import android.support.v7.widget.AppCompatTextView; +import androidx.appcompat.widget.AppCompatTextView; import android.util.AttributeSet; public class CustomView extends AppCompatTextView { diff --git a/app/src/main/java/com/uber/okbuck/example/MainActivity.java b/app/src/main/java/com/uber/okbuck/example/MainActivity.java index 306c0d6e9..3c506e386 100644 --- a/app/src/main/java/com/uber/okbuck/example/MainActivity.java +++ b/app/src/main/java/com/uber/okbuck/example/MainActivity.java @@ -5,7 +5,7 @@ import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.TextView; @@ -21,8 +21,6 @@ import com.uber.okbuck.example.dummylibrary.DummyActivity; import com.uber.okbuck.example.dummylibrary.DummyAndroidClass; import com.uber.okbuck.example.javalib.DummyJavaClass; -import com.uber.okbuck.example.sqldelightmodel.GithubRepo; -import com.uber.okbuck.example.sqldelightmodel.GithubUser; import com.uber.okbuck.java.Pojo; import com.uber.okbuck.kotlin.KotlinDataClass; import io.reactivex.Observer; @@ -107,10 +105,6 @@ public void onNext(String path) { @Override public void onSubscribe(Disposable disposable) {} }); - GithubUser user = GithubUser.create(100, "OkBuck"); - Toast.makeText(this, user.login(), Toast.LENGTH_SHORT).show(); - GithubRepo repo = GithubRepo.create(100, "OkBuck", "auto buck"); - Toast.makeText(this, repo.name() + ": " + repo.description(), Toast.LENGTH_SHORT).show(); KotlinDataClass data = new KotlinDataClass("foo", com.uber.okbuck.kotlin.android.R.string.foo); Pojo pojo = new Pojo(); diff --git a/app/src/main/java/com/uber/okbuck/example/MyApp.java b/app/src/main/java/com/uber/okbuck/example/MyApp.java index cfe6d43b2..1bcfee510 100644 --- a/app/src/main/java/com/uber/okbuck/example/MyApp.java +++ b/app/src/main/java/com/uber/okbuck/example/MyApp.java @@ -1,7 +1,7 @@ package com.uber.okbuck.example; import android.app.Application; -import android.support.v7.app.AppCompatDelegate; +import androidx.appcompat.app.AppCompatDelegate; import com.facebook.buck.android.support.exopackage.DefaultApplicationLike; import com.github.promeg.xlog_android.lib.XLogConfig; import com.squareup.leakcanary.LeakCanary; diff --git a/app/src/main/res/layout/activity_collapsing_app_bar.xml b/app/src/main/res/layout/activity_collapsing_app_bar.xml index d59e64b15..1a1d2b77a 100644 --- a/app/src/main/res/layout/activity_collapsing_app_bar.xml +++ b/app/src/main/res/layout/activity_collapsing_app_bar.xml @@ -14,13 +14,13 @@ android:layout_height="44dp" app:layout_scrollFlags="scroll|enterAlways" /> - - - + - - + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 20dd74d1d..f786fa81b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,7 +4,7 @@ android:layout_height="match_parent" android:orientation="vertical"> - } configurations.all { exclude group:"com.android.tools.build", module: "transform-api" + resolutionStrategy { + force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${deps.versions.kotlin}" + } } } @@ -113,10 +119,15 @@ def addCommonConfigurationForAndroidModules(Project project) { if (project.plugins.hasPlugin("com.squareup.sqldelight")) { variants.all { - Task okbuckTask = project.tasks.getByName("okbuck") - Task sqlDelightTask = project.tasks.getByName("generate${it.name.capitalize()}SqlDelightInterface") - okbuckTask.dependsOn(sqlDelightTask) - project.android.sourceSets."${it.name}".java.srcDirs += [sqlDelightTask.outputs.files[0] as String] + + project.android.sourceSets."${it.name}".java.srcDir project.file("build/generated/source/sqldelight") + project.android.sourceSets."${it.name}".kotlin.srcDir project.file("build/generated/source/sqldelight") + + project.afterEvaluate { proj -> + Task okbuckTask = proj.tasks.getByName("okbuck") + Task sqlDelightTask = proj.tasks.getByName("generate${it.name.capitalize()}SqlDelightInterface") + okbuckTask.dependsOn(sqlDelightTask) + } } } } @@ -131,7 +142,7 @@ okbuck { "app": [ "^com/uber/okbuck/example/AppShell^", "^com/uber/okbuck/example/BuildConfig^", - "^android/support/multidex/", + "^androidx/multidex/", "^com/facebook/buck/android/support/exopackage/", "^com/github/promeg/xlog_android/lib/XLogConfig^", "^com/squareup/leakcanary/LeakCanary^", @@ -145,19 +156,19 @@ okbuck { appLibDependencies = [ "appProd": [ "buck-android-support", - "com.android.support:multidex", + "androidx.multidex:multidex", "libraries/javalibrary:main", "libraries/common:paidRelease", ], "appDev" : [ "buck-android-support", - "com.android.support:multidex", + "androidx.multidex:multidex", "libraries/javalibrary:main", "libraries/common:freeDebug", ], "appDemo": [ "buck-android-support", - "com.android.support:multidex", + "androidx.multidex:multidex", "libraries/javalibrary:main", "libraries/common:paidRelease", ] @@ -207,6 +218,7 @@ okbuck { "com.android.tools.build:manifest-merger", "com.android.tools:dvlib", "org.ow2.asm:asm", + "org.ow2.asm:asm-commons", "com.google.protobuf:protobuf-java", "commons-codec:commons-codec", "com.google.errorprone:error_prone_annotations", @@ -232,6 +244,7 @@ okbuck { "com.android.tools:annotations", "com.android.tools.build:builder-test-api", "org.apache.httpcomponents:httpmime", + "androidx.annotation:annotation", ] allowAllVersions = [ "org.robolectric:android-all", diff --git a/buildSrc/src/main/java/com/uber/okbuck/OkBuckGradlePlugin.java b/buildSrc/src/main/java/com/uber/okbuck/OkBuckGradlePlugin.java index 74909d143..5ef3815ba 100644 --- a/buildSrc/src/main/java/com/uber/okbuck/OkBuckGradlePlugin.java +++ b/buildSrc/src/main/java/com/uber/okbuck/OkBuckGradlePlugin.java @@ -7,6 +7,7 @@ import com.uber.okbuck.core.manager.BuckManager; import com.uber.okbuck.core.manager.DependencyManager; import com.uber.okbuck.core.manager.GroovyManager; +import com.uber.okbuck.core.manager.JetifierManager; import com.uber.okbuck.core.manager.KotlinManager; import com.uber.okbuck.core.manager.LintManager; import com.uber.okbuck.core.manager.ManifestMergerManager; @@ -79,6 +80,7 @@ public class OkBuckGradlePlugin implements Plugin { public static final String OKBUCK_STATE = OKBUCK_STATE_DIR + "/STATE"; public final Map> scopes = new ConcurrentHashMap<>(); + public final Map poms = new ConcurrentHashMap<>(); public final Set exportedPaths = Sets.newConcurrentHashSet(); public DependencyCache depCache; @@ -90,6 +92,7 @@ public class OkBuckGradlePlugin implements Plugin { public KotlinManager kotlinManager; public ScalaManager scalaManager; public GroovyManager groovyManager; + public JetifierManager jetifierManager; public TransformManager transformManager; ManifestMergerManager manifestMergerManager; @@ -142,6 +145,9 @@ public void apply(Project rootProject) { // Create Scala Manager groovyManager = new GroovyManager(rootBuckProject); + // Create Jetifier Manager + jetifierManager = new JetifierManager(rootBuckProject); + // Create Robolectric Manager robolectricManager = new RobolectricManager(rootBuckProject); @@ -164,10 +170,11 @@ public void apply(Project rootProject) { task -> { annotationProcessorCache.finalizeProcessors(); dependencyManager.finalizeDependencies(); + jetifierManager.finalizeDependencies(); lintManager.finalizeDependencies(); kotlinManager.finalizeDependencies(); scalaManager.finalizeDependencies(); - groovyManager.finalDependencies(); + groovyManager.finalizeDependencies(); robolectricManager.finalizeDependencies(); transformManager.finalizeDependencies(); buckManager.finalizeDependencies(); @@ -242,6 +249,10 @@ public void apply(Project rootProject) { robolectricManager.download(); } + if (JetifierManager.isJetifierEnabled(rootProject)) { + jetifierManager.setupJetifier(okbuckExt.getJetifierExtension().version); + } + extraConfigurations.forEach( (cacheName, extraConfiguration) -> new DependencyCache( diff --git a/buildSrc/src/main/java/com/uber/okbuck/composer/android/AndroidLibraryRuleComposer.java b/buildSrc/src/main/java/com/uber/okbuck/composer/android/AndroidLibraryRuleComposer.java index 2a1378fdb..8eaa7d5f0 100644 --- a/buildSrc/src/main/java/com/uber/okbuck/composer/android/AndroidLibraryRuleComposer.java +++ b/buildSrc/src/main/java/com/uber/okbuck/composer/android/AndroidLibraryRuleComposer.java @@ -115,7 +115,7 @@ public static Rule compose( } return androidRule - .ruleType("okbuck_" + target.getRuleType().getBuckName()) + .ruleType(target.getRuleType().getBuckName()) .defaultVisibility() .deps(libraryDeps) .name(src(target)) diff --git a/buildSrc/src/main/java/com/uber/okbuck/composer/android/ExopackageAndroidLibraryRuleComposer.java b/buildSrc/src/main/java/com/uber/okbuck/composer/android/ExopackageAndroidLibraryRuleComposer.java index 7771c3fb6..031481468 100644 --- a/buildSrc/src/main/java/com/uber/okbuck/composer/android/ExopackageAndroidLibraryRuleComposer.java +++ b/buildSrc/src/main/java/com/uber/okbuck/composer/android/ExopackageAndroidLibraryRuleComposer.java @@ -52,7 +52,7 @@ public static Rule compose(AndroidAppTarget target) { } return androidRule - .ruleType("okbuck_" + target.getRuleType().getBuckName()) + .ruleType(target.getRuleType().getBuckName()) .defaultVisibility() .deps(deps) .name(appLib(target)) diff --git a/buildSrc/src/main/java/com/uber/okbuck/core/manager/GroovyManager.java b/buildSrc/src/main/java/com/uber/okbuck/core/manager/GroovyManager.java index f9db8e3ec..1b7a00340 100644 --- a/buildSrc/src/main/java/com/uber/okbuck/core/manager/GroovyManager.java +++ b/buildSrc/src/main/java/com/uber/okbuck/core/manager/GroovyManager.java @@ -56,7 +56,7 @@ public void setupGroovyHome() { startGroovy.setExecutable(true); } - public void finalDependencies() { + public void finalizeDependencies() { if (dependencies != null) { String groovyVersion = GroovySystem.getVersion(); diff --git a/buildSrc/src/main/java/com/uber/okbuck/core/manager/JetifierManager.java b/buildSrc/src/main/java/com/uber/okbuck/core/manager/JetifierManager.java new file mode 100644 index 000000000..e6fde02b5 --- /dev/null +++ b/buildSrc/src/main/java/com/uber/okbuck/core/manager/JetifierManager.java @@ -0,0 +1,116 @@ +package com.uber.okbuck.core.manager; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.sun.istack.Nullable; +import com.uber.okbuck.OkBuckGradlePlugin; +import com.uber.okbuck.composer.base.BuckRuleComposer; +import com.uber.okbuck.core.dependency.DependencyCache; +import com.uber.okbuck.core.model.base.RuleType; +import com.uber.okbuck.core.util.FileUtil; +import com.uber.okbuck.core.util.ProjectUtil; +import com.uber.okbuck.extension.JetifierExtension; +import com.uber.okbuck.template.core.Rule; +import com.uber.okbuck.template.java.Prebuilt; +import com.uber.okbuck.template.jvm.JvmBinaryRule; + +import org.gradle.api.Project; +import org.gradle.api.artifacts.Configuration; +import org.gradle.api.artifacts.dsl.DependencyHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.util.Map; +import java.util.Set; + +public final class JetifierManager { + + private static final Logger LOG = LoggerFactory.getLogger(JetifierManager.class); + + private static final String JETIFIER_LOCATION = + OkBuckGradlePlugin.WORKSPACE_PATH + "/jetifier"; + private static final String JETIFIER_BUCK_FILE = JETIFIER_LOCATION + "/BUCK"; + private static final String JETIFIER_DEPS_CONFIG = "okbuck_jetifier_deps"; + private static final String JETIFIER_GROUP = "com.android.tools.build.jetifier"; + private static final String JETIFIER_CLI_CLASS = "com.android.tools.build.jetifier.standalone.Main"; + private static final String JETIFIER_BINARY_RULE_NAME = "okbuck_jetifier"; + private static final String COMMONS_CLI_DEP = "commons-cli:commons-cli:1.3.1"; + + private static final ImmutableList JETIFIER_MODULES = + ImmutableList.of( + "jetifier-core", + "jetifier-processor" + ); + private static final ImmutableList INTERNAL_MODULES = + ImmutableList.of( + "jetifier-standalone.jar" + ); + + @Nullable private Set dependencies; + private final Project project; + + public JetifierManager(Project project) { + this.project = project; + } + + public static boolean isJetifierEnabled(Project project) { + Map properties = project.getProperties(); + + if (properties.containsKey("android.useAndroidX") + && properties.containsKey("android.enableJetifier")) { + return (Boolean.valueOf((String) properties.get("android.useAndroidX"))) + && (Boolean.valueOf((String) properties.get("android.enableJetifier"))); + } + return false; + } + + public void setupJetifier(String version) { + if (!version.equals(JetifierExtension.DEFAULT_JETIFIER_VERSION)) { + LOG.warn("Using jetifier version other than %s; This might result in problems with the tool", + JetifierExtension.DEFAULT_JETIFIER_VERSION); + } + + Configuration jetifierConfig = project.getConfigurations().maybeCreate(JETIFIER_DEPS_CONFIG); + DependencyHandler handler = project.getDependencies(); + JETIFIER_MODULES + .stream() + .map(module -> String.format("%s:%s:%s", JETIFIER_GROUP, module, version)) + .forEach(dependency -> handler.add(JETIFIER_DEPS_CONFIG, dependency)); + handler.add(JETIFIER_DEPS_CONFIG, COMMONS_CLI_DEP); + + dependencies = new DependencyCache(project, ProjectUtil.getDependencyManager(project)).build(jetifierConfig); + } + + public void finalizeDependencies() { + if (dependencies != null && dependencies.size() > 0) { + ImmutableList.Builder rulesBuilder = new ImmutableList.Builder<>(); + ImmutableSet.Builder binaryDependencies = ImmutableSet.builder(); + binaryDependencies.addAll(BuckRuleComposer.external(dependencies)); + + new File(JETIFIER_LOCATION).mkdirs(); + for (String module : INTERNAL_MODULES) { + FileUtil.copyResourceToProject( + "jetifier/" + module, new File(JETIFIER_LOCATION, module)); + rulesBuilder.add( + new Prebuilt() + .prebuiltType(RuleType.PREBUILT_JAR.getProperties().get(0)) + .prebuilt(module) + .ruleType(RuleType.PREBUILT_JAR.getBuckName()) + .name(module)); + binaryDependencies.add(":" + module); + } + + rulesBuilder.add( + new JvmBinaryRule() + .mainClassName(JETIFIER_CLI_CLASS) + .deps(binaryDependencies.build()) + .ruleType(RuleType.JAVA_BINARY.getBuckName()) + .name(JETIFIER_BINARY_RULE_NAME) + .defaultVisibility()); + + File buckFile = project.getRootProject().file(JETIFIER_BUCK_FILE); + FileUtil.writeToBuckFile(rulesBuilder.build(), buckFile); + } + } +} diff --git a/buildSrc/src/main/java/com/uber/okbuck/core/model/base/RuleType.java b/buildSrc/src/main/java/com/uber/okbuck/core/model/base/RuleType.java index 88ff56c46..84c3c5d84 100644 --- a/buildSrc/src/main/java/com/uber/okbuck/core/model/base/RuleType.java +++ b/buildSrc/src/main/java/com/uber/okbuck/core/model/base/RuleType.java @@ -27,6 +27,8 @@ public enum RuleType { PREBUILT_NATIVE_LIBRARY, ROBOLECTRIC_TEST("java"); + private static final String OKBUCK_PREFIX = "okbuck_"; + private final ImmutableList properties; RuleType() { @@ -42,17 +44,26 @@ public List getProperties() { } public String getBuckName() { - @Var RuleType buckType = this; + @Var RuleType ruleType = this; + @Var Boolean insertOkBuckPrefix = false; switch (this) { case KOTLIN_ANDROID_LIBRARY: - buckType = ANDROID_LIBRARY; + case ANDROID_LIBRARY: + ruleType = ANDROID_LIBRARY; + insertOkBuckPrefix = true; break; case KOTLIN_ROBOLECTRIC_TEST: - buckType = ROBOLECTRIC_TEST; + case ROBOLECTRIC_TEST: + ruleType = ROBOLECTRIC_TEST; + break; + case ANDROID_PREBUILT_AAR: + insertOkBuckPrefix = true; break; default: break; } - return buckType.name().toLowerCase(); + + String prefix = insertOkBuckPrefix ? OKBUCK_PREFIX : ""; + return prefix + ruleType.name().toLowerCase(); } } diff --git a/buildSrc/src/main/java/com/uber/okbuck/core/task/OkBuckTask.java b/buildSrc/src/main/java/com/uber/okbuck/core/task/OkBuckTask.java index c05f40c13..330c29680 100644 --- a/buildSrc/src/main/java/com/uber/okbuck/core/task/OkBuckTask.java +++ b/buildSrc/src/main/java/com/uber/okbuck/core/task/OkBuckTask.java @@ -6,12 +6,14 @@ import com.uber.okbuck.OkBuckGradlePlugin; import com.uber.okbuck.composer.base.BuckRuleComposer; import com.uber.okbuck.core.manager.GroovyManager; +import com.uber.okbuck.core.manager.JetifierManager; import com.uber.okbuck.core.manager.KotlinManager; import com.uber.okbuck.core.manager.ScalaManager; import com.uber.okbuck.core.model.base.ProjectType; import com.uber.okbuck.core.util.FileUtil; import com.uber.okbuck.core.util.ProguardUtil; import com.uber.okbuck.core.util.ProjectUtil; +import com.uber.okbuck.extension.JetifierExtension; import com.uber.okbuck.extension.KotlinExtension; import com.uber.okbuck.extension.OkBuckExtension; import com.uber.okbuck.extension.ScalaExtension; @@ -145,6 +147,7 @@ private void generate( .classpathMacro(CLASSPATH_ABI_MACRO) .lintJvmArgs(okbuckExt.getLintExtension().jvmArgs) .enableLint(!okbuckExt.getLintExtension().disabled) + .enableJetifier(JetifierManager.isJetifierEnabled(getProject().getRootProject())) .externalDependencyCache(okbuckExt.externalDependencyCache) .classpathExclusionRegex(okbuckExt.getLintExtension().classpathExclusionRegex) .useCompilationClasspath(okbuckExt.getLintExtension().useCompilationClasspath) diff --git a/buildSrc/src/main/java/com/uber/okbuck/extension/JetifierExtension.java b/buildSrc/src/main/java/com/uber/okbuck/extension/JetifierExtension.java new file mode 100644 index 000000000..b217f7d18 --- /dev/null +++ b/buildSrc/src/main/java/com/uber/okbuck/extension/JetifierExtension.java @@ -0,0 +1,13 @@ +package com.uber.okbuck.extension; + +public class JetifierExtension { + + public static final String DEFAULT_JETIFIER_VERSION = "1.0.0-beta02"; + + /** Jetifier jar version */ + public String version; + + JetifierExtension() { + version = DEFAULT_JETIFIER_VERSION; + } +} diff --git a/buildSrc/src/main/java/com/uber/okbuck/extension/OkBuckExtension.java b/buildSrc/src/main/java/com/uber/okbuck/extension/OkBuckExtension.java index e79604a3d..5dd893d3f 100644 --- a/buildSrc/src/main/java/com/uber/okbuck/extension/OkBuckExtension.java +++ b/buildSrc/src/main/java/com/uber/okbuck/extension/OkBuckExtension.java @@ -86,7 +86,7 @@ public class OkBuckExtension { /** The prebuilt buck binary to use */ @Input public String buckBinary = - "com.github.facebook:buck:a2ee1aa1fc42def4175bd67a1e4ba4b51e83de89@pex"; + "com.github.facebook:buck:33eaa0a2ad2b684a0ee126c242f64894b7a38623@pex"; private WrapperExtension wrapperExtension = new WrapperExtension(); private KotlinExtension kotlinExtension; @@ -96,6 +96,7 @@ public class OkBuckExtension { private TestExtension testExtension = new TestExtension(); private TransformExtension transformExtension = new TransformExtension(); private LintExtension lintExtension; + private JetifierExtension jetifierExtension; private ExternalDependenciesExtension externalDependenciesExtension; private VisibilityExtension visibilityExtension = new VisibilityExtension(); @@ -103,6 +104,7 @@ public OkBuckExtension(Project project) { buckProjects = project.getSubprojects(); kotlinExtension = new KotlinExtension(project); lintExtension = new LintExtension(project); + jetifierExtension = new JetifierExtension(); externalDependenciesExtension = new ExternalDependenciesExtension(project); } @@ -162,6 +164,14 @@ public LintExtension getLintExtension() { return lintExtension; } + public void jetifier(Action container) { + container.execute(jetifierExtension); + } + + public JetifierExtension getJetifierExtension() { + return jetifierExtension; + } + public void transform(Action container) { container.execute(transformExtension); } diff --git a/buildSrc/src/main/resources/com/uber/okbuck/core/util/jetifier/jetifier-standalone.jar b/buildSrc/src/main/resources/com/uber/okbuck/core/util/jetifier/jetifier-standalone.jar new file mode 100644 index 0000000000000000000000000000000000000000..130642322b426e68f77b6527323aa98b94834b8c GIT binary patch literal 16338 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 k(tnnN=0oQG?=;FkdLGz^&(j|xGXhW(7!VLB#~ diff --git a/kotlin-app/src/androidTest/java/com/uber/okbuck/example/MainActivityTest.kt b/kotlin-app/src/androidTest/java/com/uber/okbuck/example/MainActivityTest.kt index cca00fdfd..2ec854191 100644 --- a/kotlin-app/src/androidTest/java/com/uber/okbuck/example/MainActivityTest.kt +++ b/kotlin-app/src/androidTest/java/com/uber/okbuck/example/MainActivityTest.kt @@ -1,6 +1,6 @@ package com.uber.okbuck.example -import android.support.test.rule.ActivityTestRule +import androidx.test.rule.ActivityTestRule import org.junit.Rule import org.junit.Test diff --git a/kotlin-app/src/main/java/com/uber/okbuck/example/MainActivity.kt b/kotlin-app/src/main/java/com/uber/okbuck/example/MainActivity.kt index f9254233f..f35afa29e 100644 --- a/kotlin-app/src/main/java/com/uber/okbuck/example/MainActivity.kt +++ b/kotlin-app/src/main/java/com/uber/okbuck/example/MainActivity.kt @@ -1,6 +1,8 @@ package com.uber.okbuck.example import android.os.Bundle +import android.widget.Toast +import com.uber.okbuck.example.sqldelightmodel.GithubRepo import dagger.android.support.DaggerAppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import javax.inject.Inject @@ -18,5 +20,8 @@ class MainActivity : DaggerAppCompatActivity() { fab.setOnClickListener { analytics.sendAnalyticsEvent("FAB Clicked") } + + val repo = GithubRepo.create(100, "OkBuck", "auto buck") + Toast.makeText(this, repo.name + ": " + repo.description, Toast.LENGTH_SHORT).show() } } diff --git a/app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubRepo.java b/kotlin-app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubRepo.java similarity index 87% rename from app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubRepo.java rename to kotlin-app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubRepo.java index 664fbad24..bb9e394bd 100644 --- a/app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubRepo.java +++ b/kotlin-app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubRepo.java @@ -5,7 +5,7 @@ import com.google.gson.TypeAdapter; @AutoValue -public abstract class GithubRepo implements GithubRepoModel { +public abstract class GithubRepo implements GithubRepos { public static TypeAdapter typeAdapter(final Gson gson) { return new AutoValue_GithubRepo.GsonTypeAdapter(gson); } diff --git a/app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubUser.java b/kotlin-app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubUser.java similarity index 87% rename from app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubUser.java rename to kotlin-app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubUser.java index bbbe06392..58d2fe9ed 100644 --- a/app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubUser.java +++ b/kotlin-app/src/main/java/com/uber/okbuck/example/sqldelightmodel/GithubUser.java @@ -5,7 +5,7 @@ import com.google.gson.TypeAdapter; @AutoValue -public abstract class GithubUser implements GithubUserModel { +public abstract class GithubUser implements GithubUsers { public static TypeAdapter typeAdapter(final Gson gson) { return new AutoValue_GithubUser.GsonTypeAdapter(gson); } diff --git a/kotlin-app/src/main/res/layout/activity_main.xml b/kotlin-app/src/main/res/layout/activity_main.xml index 87d72338e..9f6ac6458 100644 --- a/kotlin-app/src/main/res/layout/activity_main.xml +++ b/kotlin-app/src/main/res/layout/activity_main.xml @@ -1,5 +1,5 @@ - - - - + - - + diff --git a/kotlin-app/src/main/res/layout/content_main.xml b/kotlin-app/src/main/res/layout/content_main.xml index a9fb4f48a..7315e91d4 100644 --- a/kotlin-app/src/main/res/layout/content_main.xml +++ b/kotlin-app/src/main/res/layout/content_main.xml @@ -1,5 +1,5 @@ - - + diff --git a/app/src/main/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubRepo.sq b/kotlin-app/src/main/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubRepo.sq similarity index 100% rename from app/src/main/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubRepo.sq rename to kotlin-app/src/main/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubRepo.sq diff --git a/app/src/dev/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubUser.sq b/kotlin-app/src/main/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubUser.sq similarity index 100% rename from app/src/dev/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubUser.sq rename to kotlin-app/src/main/sqldelight/com/uber/okbuck/example/sqldelightmodel/GithubUser.sq diff --git a/libraries/common/build.gradle b/libraries/common/build.gradle index a0ca80c26..fcc9010c8 100644 --- a/libraries/common/build.gradle +++ b/libraries/common/build.gradle @@ -17,6 +17,6 @@ android { } dependencies { - api deps.support.appCompat + api deps.androidx.appCompat implementation project(":libraries:parcelable") } diff --git a/libraries/emptylibrary/build.gradle b/libraries/emptylibrary/build.gradle index 22c382c77..56d177f86 100644 --- a/libraries/emptylibrary/build.gradle +++ b/libraries/emptylibrary/build.gradle @@ -7,9 +7,9 @@ android { } dependencies { - api deps.support.appCompat + api deps.androidx.appCompat - compileOnly deps.support.multidex + compileOnly deps.androidx.multidex testImplementation deps.test.junit testImplementation deps.test.robolectric diff --git a/libraries/javalibrary/build.gradle b/libraries/javalibrary/build.gradle index 1507ce46f..1b2eeed46 100644 --- a/libraries/javalibrary/build.gradle +++ b/libraries/javalibrary/build.gradle @@ -7,7 +7,7 @@ dependencies { annotationProcessor deps.apt.javax annotationProcessor deps.apt.daggerCompiler - compileOnly deps.support.annotations + compileOnly deps.androidx.annotations testImplementation deps.test.junit } diff --git a/libraries/kotlinandroidlibrary/build.gradle b/libraries/kotlinandroidlibrary/build.gradle index 10eb76613..3d3a552f9 100755 --- a/libraries/kotlinandroidlibrary/build.gradle +++ b/libraries/kotlinandroidlibrary/build.gradle @@ -8,9 +8,9 @@ androidExtensions { dependencies { api deps.external.kotlinStdlib - implementation deps.support.appCompat - implementation deps.support.constraintLayout - implementation deps.support.design + implementation deps.androidx.appCompat + implementation deps.androidx.constraintLayout + implementation deps.androidx.material testImplementation deps.test.junit testImplementation deps.test.kotlinTest @@ -29,6 +29,6 @@ android { } defaultConfig { - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } } diff --git a/libraries/kotlinandroidlibrary/src/androidTest/AndroidManifest.xml b/libraries/kotlinandroidlibrary/src/androidTest/AndroidManifest.xml index ba3feb3f3..db1e578ec 100644 --- a/libraries/kotlinandroidlibrary/src/androidTest/AndroidManifest.xml +++ b/libraries/kotlinandroidlibrary/src/androidTest/AndroidManifest.xml @@ -4,7 +4,7 @@ diff --git a/libraries/kotlinandroidlibrary/src/androidTest/java/com/uber/okbuck/java/KotlinLibActivityTest.kt b/libraries/kotlinandroidlibrary/src/androidTest/java/com/uber/okbuck/java/KotlinLibActivityTest.kt index a5fb57d72..2ccd7f80a 100644 --- a/libraries/kotlinandroidlibrary/src/androidTest/java/com/uber/okbuck/java/KotlinLibActivityTest.kt +++ b/libraries/kotlinandroidlibrary/src/androidTest/java/com/uber/okbuck/java/KotlinLibActivityTest.kt @@ -4,12 +4,12 @@ import android.content.Intent import org.junit.Rule import org.junit.Test import org.hamcrest.CoreMatchers.allOf -import android.support.test.rule.ActivityTestRule -import android.support.test.espresso.Espresso.onView -import android.support.test.espresso.assertion.ViewAssertions.matches -import android.support.test.espresso.matcher.ViewMatchers.isDisplayed -import android.support.test.espresso.matcher.ViewMatchers.withId -import android.support.test.espresso.matcher.ViewMatchers.withText +import androidx.test.rule.ActivityTestRule +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText import com.uber.okbuck.kotlin.android.R class KotlinLibActivityTest { diff --git a/libraries/kotlinandroidlibrary/src/main/java/com/uber/okbuck/java/KotlinLibActivity.kt b/libraries/kotlinandroidlibrary/src/main/java/com/uber/okbuck/java/KotlinLibActivity.kt index 3206ae612..27fb8dea5 100644 --- a/libraries/kotlinandroidlibrary/src/main/java/com/uber/okbuck/java/KotlinLibActivity.kt +++ b/libraries/kotlinandroidlibrary/src/main/java/com/uber/okbuck/java/KotlinLibActivity.kt @@ -1,8 +1,8 @@ package com.uber.okbuck.java import android.os.Bundle -import android.support.design.widget.Snackbar -import android.support.v7.app.AppCompatActivity +import androidx.appcompat.app.AppCompatActivity +import com.google.android.material.snackbar.Snackbar import com.uber.okbuck.kotlin.android.R import kotlinx.android.synthetic.main.activity_kotlin_lib.* diff --git a/libraries/kotlinandroidlibrary/src/main/res/layout/activity_kotlin_lib.xml b/libraries/kotlinandroidlibrary/src/main/res/layout/activity_kotlin_lib.xml index 6f907103c..1d4ef9e9d 100644 --- a/libraries/kotlinandroidlibrary/src/main/res/layout/activity_kotlin_lib.xml +++ b/libraries/kotlinandroidlibrary/src/main/res/layout/activity_kotlin_lib.xml @@ -1,5 +1,5 @@ - - - - + - - + diff --git a/libraries/kotlinandroidlibrary/src/main/res/layout/content_kotlin_lib.xml b/libraries/kotlinandroidlibrary/src/main/res/layout/content_kotlin_lib.xml index a33930737..a9e102cf4 100644 --- a/libraries/kotlinandroidlibrary/src/main/res/layout/content_kotlin_lib.xml +++ b/libraries/kotlinandroidlibrary/src/main/res/layout/content_kotlin_lib.xml @@ -1,5 +1,5 @@ - - + diff --git a/libraries/lintErrorLibrary/build.gradle b/libraries/lintErrorLibrary/build.gradle index 0fcaf9846..f351b0b15 100644 --- a/libraries/lintErrorLibrary/build.gradle +++ b/libraries/lintErrorLibrary/build.gradle @@ -6,7 +6,7 @@ dependencies { annotationProcessor deps.apt.butterKnifeCompiler - implementation deps.support.appCompat + implementation deps.androidx.appCompat implementation deps.external.butterKnife }