diff --git a/android-sdk/build.gradle b/android-sdk/build.gradle index 4c1f090b8..40de5ed83 100644 --- a/android-sdk/build.gradle +++ b/android-sdk/build.gradle @@ -46,7 +46,9 @@ android { testCoverageEnabled true } } - + lintOptions { + abortOnError false + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 @@ -55,6 +57,7 @@ android { dexOptions { javaMaxHeapSize "4g" } + buildToolsVersion '26.0.2' } dependencies { diff --git a/android-sdk/jacoco.exec b/android-sdk/jacoco.exec new file mode 100644 index 000000000..ca238a502 Binary files /dev/null and b/android-sdk/jacoco.exec differ diff --git a/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyClientEngineTest.java b/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyClientEngineTest.java index cc9649965..9acf90071 100644 --- a/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyClientEngineTest.java +++ b/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyClientEngineTest.java @@ -20,7 +20,6 @@ import android.content.Context; import android.content.res.Configuration; import android.os.Build; -import android.support.annotation.RequiresApi; import android.support.test.runner.AndroidJUnit4; import com.optimizely.ab.event.internal.payload.Event; @@ -34,7 +33,7 @@ @RunWith(AndroidJUnit4.class) public class OptimizelyClientEngineTest { - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB_MR2) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB_MR2) @Test public void testGetClientEngineFromContextAndroidTV() { Context context = mock(Context.class); @@ -44,7 +43,7 @@ public void testGetClientEngineFromContextAndroidTV() { assertEquals(Event.ClientEngine.ANDROID_TV_SDK, OptimizelyClientEngine.getClientEngineFromContext(context)); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB_MR2) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB_MR2) @Test public void testGetClientEngineFromContextAndroid() { Context context = mock(Context.class); diff --git a/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java b/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java index 72822dcd6..357c27f84 100644 --- a/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java +++ b/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java @@ -20,7 +20,6 @@ import android.content.Context; import android.content.res.Configuration; import android.os.Build; -import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.espresso.core.deps.guava.util.concurrent.ListeningExecutorService; import android.support.test.runner.AndroidJUnit4; diff --git a/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerTest.java b/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerTest.java index c3fc1c493..865f7d9d2 100644 --- a/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerTest.java +++ b/android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerTest.java @@ -22,7 +22,6 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; -import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.espresso.core.deps.guava.util.concurrent.ListeningExecutorService; import android.support.test.espresso.core.deps.guava.util.concurrent.MoreExecutors; @@ -255,7 +254,7 @@ public void stop() { assertNull(optimizelyManager.getOptimizelyStartListener()); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void injectOptimizely() { Context context = mock(Context.class); @@ -275,7 +274,7 @@ public void injectOptimizely() { } @Test - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + //@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public void injectOptimizelyNullListener() { Context context = mock(Context.class); PackageManager packageManager = mock(PackageManager.class); @@ -319,7 +318,7 @@ public void injectOptimizelyNullListener() { assertEquals(optimizelyManager.getProjectId(), intent2.getStringExtra(DatafileService.EXTRA_PROJECT_ID)); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void injectOptimizelyHandlesInvalidDatafile() { Context context = mock(Context.class); @@ -350,7 +349,7 @@ public void injectOptimizelyHandlesInvalidDatafile() { } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void injectOptimizelyDoesNotDuplicateCallback() { Context context = mock(Context.class); diff --git a/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerDatafileServiceConnectionTest.java b/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerDatafileServiceConnectionTest.java index 00928b20b..bca42480e 100644 --- a/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerDatafileServiceConnectionTest.java +++ b/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerDatafileServiceConnectionTest.java @@ -18,7 +18,6 @@ import android.content.Context; import android.os.Build; -import android.support.annotation.RequiresApi; import org.junit.Before; import org.junit.Test; @@ -54,7 +53,7 @@ public void setup() { datafileServiceConnection = new DatafileServiceConnection(optimizelyManager.getProjectId(), context, optimizelyManager.getDatafileLoadedListener(context,null)); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void onServiceConnected() { DatafileService.LocalBinder binder = mock(DatafileService.LocalBinder.class); @@ -70,7 +69,6 @@ public void onServiceConnected() { verify(service).getDatafile(same("1"), any(DatafileLoader.class), any(DatafileLoadedListener.class)); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void onServiceConnectedNullServiceFromBinder() { DatafileService.LocalBinder binder = mock(DatafileService.LocalBinder.class); diff --git a/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerOptlyActivityLifecycleCallbacksTest.java b/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerOptlyActivityLifecycleCallbacksTest.java index 5dc0c1f7a..4135ed225 100644 --- a/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerOptlyActivityLifecycleCallbacksTest.java +++ b/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerOptlyActivityLifecycleCallbacksTest.java @@ -18,7 +18,6 @@ import android.app.Activity; import android.os.Build; -import android.support.annotation.RequiresApi; import org.junit.Before; import org.junit.Test; @@ -38,13 +37,11 @@ public class OptimizelyManagerOptlyActivityLifecycleCallbacksTest { @Mock Activity activity; private OptimizelyManager.OptlyActivityLifecycleCallbacks optlyActivityLifecycleCallbacks; - @RequiresApi(api = Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Before public void setup() { optlyActivityLifecycleCallbacks = new OptimizelyManager.OptlyActivityLifecycleCallbacks(optimizelyManager); } - @RequiresApi(api = Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Test public void onActivityStopped() { optlyActivityLifecycleCallbacks.onActivityStopped(activity); diff --git a/build.gradle b/build.gradle index 321e47301..6a34b40f3 100644 --- a/build.gradle +++ b/build.gradle @@ -31,9 +31,10 @@ buildscript { } repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.0.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -43,6 +44,7 @@ buildscript { allprojects { repositories { jcenter() + google() } } diff --git a/datafile-handler/build.gradle b/datafile-handler/build.gradle index 89637b9e3..b20fce051 100644 --- a/datafile-handler/build.gradle +++ b/datafile-handler/build.gradle @@ -33,6 +33,9 @@ android { testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" consumerProguardFiles '../proguard-rules.txt' } + lintOptions { + abortOnError false + } testOptions { unitTests.returnDefaultValues = true } @@ -49,6 +52,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } + buildToolsVersion '26.0.2' } dependencies { diff --git a/datafile-handler/jacoco.exec b/datafile-handler/jacoco.exec new file mode 100644 index 000000000..402c81f81 Binary files /dev/null and b/datafile-handler/jacoco.exec differ diff --git a/datafile-handler/src/androidTest/java/com/optimizely/ab/android/datafile_handler/DatafileLoaderTest.java b/datafile-handler/src/androidTest/java/com/optimizely/ab/android/datafile_handler/DatafileLoaderTest.java index 36e3ece59..d6455eaf6 100644 --- a/datafile-handler/src/androidTest/java/com/optimizely/ab/android/datafile_handler/DatafileLoaderTest.java +++ b/datafile-handler/src/androidTest/java/com/optimizely/ab/android/datafile_handler/DatafileLoaderTest.java @@ -18,7 +18,7 @@ import android.content.Context; import android.os.Build; -import android.support.annotation.RequiresApi; +//import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.espresso.core.deps.guava.util.concurrent.ListeningExecutorService; import android.support.test.espresso.core.deps.guava.util.concurrent.MoreExecutors; @@ -53,7 +53,6 @@ /** * Tests for {@link DatafileLoader} */ -@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @RunWith(AndroidJUnit4.class) public class DatafileLoaderTest { diff --git a/datafile-handler/src/androidTest/java/com/optimizely/ab/android/datafile_handler/DatafileServiceTest.java b/datafile-handler/src/androidTest/java/com/optimizely/ab/android/datafile_handler/DatafileServiceTest.java index 612a09d22..97d440b7b 100644 --- a/datafile-handler/src/androidTest/java/com/optimizely/ab/android/datafile_handler/DatafileServiceTest.java +++ b/datafile-handler/src/androidTest/java/com/optimizely/ab/android/datafile_handler/DatafileServiceTest.java @@ -21,7 +21,7 @@ import android.content.Intent; import android.os.Build; import android.os.IBinder; -import android.support.annotation.RequiresApi; +//import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.espresso.core.deps.guava.util.concurrent.ListeningExecutorService; import android.support.test.espresso.core.deps.guava.util.concurrent.MoreExecutors; @@ -69,7 +69,7 @@ public void setup() { executor = MoreExecutors.newDirectExecutorService(); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void testBinding() throws TimeoutException { Context context = InstrumentationRegistry.getTargetContext(); @@ -96,7 +96,7 @@ public void testBinding() throws TimeoutException { assertTrue(datafileService.isBound()); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void testValidStart() throws TimeoutException { Context context = InstrumentationRegistry.getTargetContext(); @@ -116,7 +116,7 @@ public void testValidStart() throws TimeoutException { assertEquals(val, START_FLAG_REDELIVERY); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void testNullIntentStart() throws TimeoutException { Context context = InstrumentationRegistry.getTargetContext(); @@ -135,7 +135,7 @@ public void testNullIntentStart() throws TimeoutException { verify(logger).warn("Data file service received a null intent"); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void testNoProjectIdIntentStart() throws TimeoutException { Context context = InstrumentationRegistry.getTargetContext(); @@ -154,7 +154,7 @@ public void testNoProjectIdIntentStart() throws TimeoutException { verify(logger).warn("Data file service received an intent with no project id extra"); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void testUnbind() throws TimeoutException { Context context = InstrumentationRegistry.getTargetContext(); @@ -174,7 +174,7 @@ public void testUnbind() throws TimeoutException { verify(logger).info("All clients are unbound from data file service"); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test @Ignore public void testIntentExtraData(){ @@ -203,7 +203,7 @@ public void testIntentExtraData(){ assertTrue(intent2.getComponent().getShortClassName().contains("DatafileService")); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + //@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void testGetDatafileUrl(){ // HARD-CODING link here to make sure we don't unintentionally mess up the datafile version diff --git a/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileLoader.java b/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileLoader.java index c4d300ada..f2c700618 100644 --- a/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileLoader.java +++ b/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileLoader.java @@ -21,7 +21,6 @@ import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; import org.json.JSONObject; import org.slf4j.Logger; @@ -58,7 +57,6 @@ public void onStop(Context context) {} }); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) public void getDatafile(@NonNull String datafileUrl, @Nullable DatafileLoadedListener datafileLoadedListener) { RequestDatafileFromClientTask requestDatafileFromClientTask = new RequestDatafileFromClientTask(datafileUrl, diff --git a/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileService.java b/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileService.java index 1c5d5ae3e..acbb016a3 100644 --- a/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileService.java +++ b/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileService.java @@ -24,7 +24,6 @@ import android.os.IBinder; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; import com.optimizely.ab.android.shared.Cache; import com.optimizely.ab.android.shared.Client; @@ -57,7 +56,6 @@ public class DatafileService extends Service { * @hide * @see Service#onStartCommand(Intent, int, int) */ - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Override public int onStartCommand(Intent intent, int flags, int startId) { if (intent != null) { @@ -117,7 +115,6 @@ public void stop() { stopSelf(); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) public void getDatafile(String projectId, DatafileLoader datafileLoader, DatafileLoadedListener loadedListener) { String datafileUrl = getDatafileUrl(projectId); datafileLoader.getDatafile(datafileUrl, loadedListener); diff --git a/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileServiceConnection.java b/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileServiceConnection.java index f6075e871..7f4ccd09c 100644 --- a/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileServiceConnection.java +++ b/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DatafileServiceConnection.java @@ -22,7 +22,6 @@ import android.os.Build; import android.os.IBinder; import android.support.annotation.NonNull; -import android.support.annotation.RequiresApi; import com.optimizely.ab.android.shared.Cache; import com.optimizely.ab.android.shared.Client; @@ -61,7 +60,6 @@ public DatafileServiceConnection(@NonNull String projectId, @NonNull Context con * * @see ServiceConnection#onServiceConnected(ComponentName, IBinder) */ - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Override public void onServiceConnected(ComponentName className, IBinder service) { diff --git a/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DefaultDatafileHandler.java b/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DefaultDatafileHandler.java index 562e84f72..ebad6df9e 100644 --- a/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DefaultDatafileHandler.java +++ b/datafile-handler/src/main/java/com/optimizely/ab/android/datafile_handler/DefaultDatafileHandler.java @@ -20,7 +20,6 @@ import android.content.Intent; import android.os.Build; import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; import com.optimizely.ab.android.shared.Cache; import com.optimizely.ab.android.shared.Client; @@ -70,7 +69,6 @@ public void downloadDatafile(final Context context, String projectId, final Data if (datafileServiceConnection == null) { this.datafileServiceConnection = new DatafileServiceConnection(projectId, context.getApplicationContext(), new DatafileLoadedListener() { - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Override public void onDatafileLoaded(@Nullable String dataFile) { if (listener != null) { diff --git a/event-handler/build.gradle b/event-handler/build.gradle index 8e570a9a2..5a3449070 100644 --- a/event-handler/build.gradle +++ b/event-handler/build.gradle @@ -36,6 +36,9 @@ android { testOptions { unitTests.returnDefaultValues = true } + lintOptions { + abortOnError false + } buildTypes { release { minifyEnabled false @@ -49,6 +52,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } + buildToolsVersion '26.0.2' } dependencies { diff --git a/event-handler/jacoco.exec b/event-handler/jacoco.exec new file mode 100644 index 000000000..426ae0b83 Binary files /dev/null and b/event-handler/jacoco.exec differ diff --git a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/DefaultEventHandlerTest.java b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/DefaultEventHandlerTest.java index 0f15e1a8f..65292d8b7 100644 --- a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/DefaultEventHandlerTest.java +++ b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/DefaultEventHandlerTest.java @@ -19,7 +19,6 @@ import android.content.Context; import android.content.Intent; import android.os.Build; -import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.util.Pair; diff --git a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventClientTest.java b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventClientTest.java index da9d161ce..59ce5d216 100644 --- a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventClientTest.java +++ b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventClientTest.java @@ -19,7 +19,6 @@ import android.content.Context; import android.content.Intent; import android.os.Build; -import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.util.Pair; diff --git a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventDAOTest.java b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventDAOTest.java index fcbc2112d..051c13cfe 100644 --- a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventDAOTest.java +++ b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventDAOTest.java @@ -18,7 +18,6 @@ import android.content.Context; import android.os.Build; -import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.util.Pair; @@ -49,7 +48,6 @@ public class EventDAOTest { private Logger logger; private Context context; - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Before public void setupEventDAO() { logger = mock(Logger.class); diff --git a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventDispatcherTest.java b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventDispatcherTest.java index c99cba31e..e55a5154c 100644 --- a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventDispatcherTest.java +++ b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventDispatcherTest.java @@ -20,7 +20,6 @@ import android.content.Context; import android.content.Intent; import android.os.Build; -import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; @@ -63,7 +62,6 @@ public class EventDispatcherTest { private Context context; private Client client; - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Before public void setup() { context = InstrumentationRegistry.getTargetContext(); diff --git a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventSQLiteOpenHelperTest.java b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventSQLiteOpenHelperTest.java index 3dbee00c0..6c68f0ed0 100644 --- a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventSQLiteOpenHelperTest.java +++ b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/EventSQLiteOpenHelperTest.java @@ -20,7 +20,6 @@ import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Build; -import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; @@ -54,7 +53,6 @@ public void teardown() { context.deleteDatabase(String.format(EventSQLiteOpenHelper.DB_NAME, "1")); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Test public void onCreateMakesTables() { EventSQLiteOpenHelper eventSQLiteOpenHelper = diff --git a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/ServiceSchedulerTest.java b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/ServiceSchedulerTest.java index 245b95204..d402f8f83 100644 --- a/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/ServiceSchedulerTest.java +++ b/event-handler/src/androidTest/java/com/optimizely/ab/android/event_handler/ServiceSchedulerTest.java @@ -25,7 +25,7 @@ import android.content.Context; import android.content.Intent; import android.os.Build; -import android.support.annotation.RequiresApi; +//import android.support.annotation.RequiresApi; import android.support.test.InstrumentationRegistry; import android.support.test.filters.SdkSuppress; import android.support.test.runner.AndroidJUnit4; @@ -64,7 +64,6 @@ public class ServiceSchedulerTest { private ServiceScheduler serviceScheduler; private Context context; - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Before public void setup() { context = mock(Context.class); diff --git a/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventDAO.java b/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventDAO.java index 47747baac..65e52bd8e 100644 --- a/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventDAO.java +++ b/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventDAO.java @@ -21,7 +21,6 @@ import android.database.Cursor; import android.os.Build; import android.support.annotation.NonNull; -import android.support.annotation.RequiresApi; import android.util.Pair; import org.slf4j.Logger; @@ -60,7 +59,6 @@ private EventDAO(@NonNull EventSQLiteOpenHelper dbHelper, @NonNull Logger logger * @param logger where to log errors and warnings. * @return a new instance of EventDAO. */ - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) static EventDAO getInstance(@NonNull Context context, @NonNull String projectId, @NonNull Logger logger) { EventSQLiteOpenHelper sqLiteOpenHelper = new EventSQLiteOpenHelper(context, projectId, null, EventSQLiteOpenHelper.VERSION, LoggerFactory.getLogger(EventSQLiteOpenHelper.class)); return new EventDAO(sqLiteOpenHelper, logger); diff --git a/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventIntentService.java b/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventIntentService.java index f16291f94..6ea5d2135 100644 --- a/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventIntentService.java +++ b/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventIntentService.java @@ -22,7 +22,6 @@ import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; import com.optimizely.ab.android.shared.Client; import com.optimizely.ab.android.shared.OptlyStorage; @@ -57,7 +56,6 @@ public EventIntentService() { * Create the event dispatcher {@link EventDispatcher} * @see IntentService#onCreate() */ - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) @Override public void onCreate() { super.onCreate(); diff --git a/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventSQLiteOpenHelper.java b/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventSQLiteOpenHelper.java index 5ac1d4fdd..8d6143c37 100644 --- a/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventSQLiteOpenHelper.java +++ b/event-handler/src/main/java/com/optimizely/ab/android/event_handler/EventSQLiteOpenHelper.java @@ -22,7 +22,7 @@ import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; +//import android.support.annotation.RequiresApi; import org.slf4j.Logger; @@ -48,7 +48,7 @@ class EventSQLiteOpenHelper extends SQLiteOpenHelper { @NonNull private final String projectId; @NonNull private final Context context; - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) + // @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) EventSQLiteOpenHelper(@NonNull Context context, @NonNull String projectId, @Nullable SQLiteDatabase.CursorFactory factory, int version, @NonNull Logger logger) { super(context, String.format(DB_NAME, projectId), factory, version); this.logger = logger; diff --git a/event-handler/src/test/java/com/optimizely/ab/android/event_handler/EventReschedulerTest.java b/event-handler/src/test/java/com/optimizely/ab/android/event_handler/EventReschedulerTest.java index b664316bf..3a83bd480 100644 --- a/event-handler/src/test/java/com/optimizely/ab/android/event_handler/EventReschedulerTest.java +++ b/event-handler/src/test/java/com/optimizely/ab/android/event_handler/EventReschedulerTest.java @@ -20,7 +20,6 @@ import android.content.Intent; import android.net.wifi.WifiManager; import android.os.Build; -import android.support.annotation.RequiresApi; import com.optimizely.ab.android.shared.ServiceScheduler; @@ -80,7 +79,6 @@ public void onReceiveValidBootComplete() { verify(logger).info("Rescheduling event flushing if necessary"); } - @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB_MR1) @Test public void onReceiveValidPackageReplaced() { when(intent.getAction()).thenReturn(Intent.ACTION_MY_PACKAGE_REPLACED); diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a3a363bab..ef6737f39 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Apr 04 22:41:06 CEST 2017 +#Fri Dec 15 20:28:53 PKT 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/shared/build.gradle b/shared/build.gradle index e78c33357..3f9a5dc05 100644 --- a/shared/build.gradle +++ b/shared/build.gradle @@ -45,10 +45,14 @@ android { testCoverageEnabled true } } + lintOptions { + abortOnError false + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } + buildToolsVersion '26.0.2' } dependencies { diff --git a/shared/src/main/java/com/optimizely/ab/android/shared/JobWorkService.java b/shared/src/main/java/com/optimizely/ab/android/shared/JobWorkService.java index d3f523344..b2cd41cfe 100644 --- a/shared/src/main/java/com/optimizely/ab/android/shared/JobWorkService.java +++ b/shared/src/main/java/com/optimizely/ab/android/shared/JobWorkService.java @@ -27,7 +27,7 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Handler; -import android.support.annotation.RequiresApi; +//import android.support.annotation.RequiresApi; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +43,7 @@ * as a job schedulers service or for pre-AndroidO as a AlarmService. */ //BEGIN_INCLUDE(service) -@RequiresApi(api = Build.VERSION_CODES.O) +//@RequiresApi(api = Build.VERSION_CODES.O) public class JobWorkService extends JobService { public static final String INTENT_EXTRA_JWS_PERIODIC = "com.optimizely.ab.android.shared.JobService.Periodic"; public static final int ONE_MINUTE = 60 * 1000; diff --git a/shared/src/main/java/com/optimizely/ab/android/shared/ScheduledJobService.java b/shared/src/main/java/com/optimizely/ab/android/shared/ScheduledJobService.java index 6f446b2b4..0daa4b02d 100644 --- a/shared/src/main/java/com/optimizely/ab/android/shared/ScheduledJobService.java +++ b/shared/src/main/java/com/optimizely/ab/android/shared/ScheduledJobService.java @@ -27,7 +27,7 @@ import android.os.Build; import android.os.Handler; import android.os.PersistableBundle; -import android.support.annotation.RequiresApi; +//import android.support.annotation.RequiresApi; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +40,7 @@ */ //BEGIN_INCLUDE(service) -@RequiresApi(api = Build.VERSION_CODES.O) +//@RequiresApi(api = Build.VERSION_CODES.O) public class ScheduledJobService extends JobService { public static final String INTENT_EXTRA_COMPONENT_NAME = "com.optimizely.ab.android.shared.JobService.ComponentName"; public static final int ONE_MINUTE = 60 * 1000; diff --git a/shared/src/main/java/com/optimizely/ab/android/shared/ServiceScheduler.java b/shared/src/main/java/com/optimizely/ab/android/shared/ServiceScheduler.java index c1ce3f3d8..532e24404 100644 --- a/shared/src/main/java/com/optimizely/ab/android/shared/ServiceScheduler.java +++ b/shared/src/main/java/com/optimizely/ab/android/shared/ServiceScheduler.java @@ -27,7 +27,7 @@ import android.os.Build; import android.os.PersistableBundle; import android.support.annotation.NonNull; -import android.support.annotation.RequiresApi; +//import android.support.annotation.RequiresApi; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -281,7 +281,7 @@ public static void startService(Context context, Integer jobId, Intent intent) { } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + //@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private static boolean isScheduled(Context context, Integer jobId) { if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); diff --git a/test-app/build.gradle b/test-app/build.gradle index 6c7fef638..d9621a8da 100644 --- a/test-app/build.gradle +++ b/test-app/build.gradle @@ -14,6 +14,9 @@ android { testOptions { unitTests.returnDefaultValues = true } + lintOptions { + abortOnError false + } buildTypes { release { minifyEnabled false @@ -31,6 +34,7 @@ android { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } + buildToolsVersion '26.0.2' } dependencies { diff --git a/test-app/src/androidTest/java/com/optimizely/ab/android/test_app/MainActivityEspressoTest.java b/test-app/src/androidTest/java/com/optimizely/ab/android/test_app/MainActivityEspressoTest.java index 2b102a3d1..6e791d9a7 100644 --- a/test-app/src/androidTest/java/com/optimizely/ab/android/test_app/MainActivityEspressoTest.java +++ b/test-app/src/androidTest/java/com/optimizely/ab/android/test_app/MainActivityEspressoTest.java @@ -19,8 +19,10 @@ import android.app.AlarmManager; import android.content.Context; import android.content.Intent; +import android.os.Build; import android.support.test.InstrumentationRegistry; import android.support.test.espresso.Espresso; +import android.support.test.espresso.IdlingPolicies; import android.support.test.espresso.idling.CountingIdlingResource; import android.support.test.filters.LargeTest; import android.support.test.rule.ActivityTestRule; @@ -48,6 +50,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; +import static android.support.test.InstrumentationRegistry.getInstrumentation; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.assertion.ViewAssertions.matches; @@ -57,8 +60,8 @@ import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; -@RunWith(AndroidJUnit4.class) @LargeTest +@RunWith(AndroidJUnit4.class) public class MainActivityEspressoTest { private Context context = InstrumentationRegistry.getTargetContext(); @@ -165,6 +168,8 @@ public void experimentActivationForWhitelistUser() throws Exception { // Check that the text was changed. // These tests are pointed at a real project. // The user 'test_user` is in the whitelist for variation_a for experiment background_experiment + IdlingPolicies.setMasterPolicyTimeout(3, TimeUnit.MINUTES); + IdlingPolicies.setIdlingResourceTimeout(3, TimeUnit.MINUTES); onView(withId(R.id.tv_variation_a_text_1)) .check(matches(isDisplayed())); diff --git a/user-profile/build.gradle b/user-profile/build.gradle index 4ab93fbe4..1023d51ea 100644 --- a/user-profile/build.gradle +++ b/user-profile/build.gradle @@ -33,6 +33,9 @@ android { testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" consumerProguardFiles '../proguard-rules.txt' } + lintOptions { + abortOnError false + } testOptions { unitTests.returnDefaultValues = true } @@ -49,6 +52,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } + buildToolsVersion '26.0.2' } dependencies {