I have three build types: debug, dogfood, and release.
In app's build.gradle
I define which build types are "debuggable".
I also have a library Gradle module as a dependency.
Inside library's build.gradle
I define the same three build types.
#!/bin/bash | |
if [ -z "$1" ]; then | |
echo "Must specify module (e.g. app)" | |
exit 1 | |
fi | |
if [ -z "$2" ]; then | |
echo "Must specify build type, starting w/ capital letter (e.g. Debug, DebugFree, ReleasePaid)" | |
exit 1 |
#!/bin/bash | |
# Uninstall androidx things | |
adb uninstall androidx.test.orchestrator | |
adb uninstall androidx.test.services | |
# uninstall old android things | |
adb uninstall android.support.test.services | |
adb uninstall android.support.test.orchestrator |
> Task :app:assembleDebugAndroidTest | |
> Task :app:assembleAndroidTest | |
Download https://github.com/TestArmada/flank/releases/download/v4.2.0/flank.jar | |
> Task :app:downloadFlank | |
> Task :app:writeConfigProps | |
> Task :app:execFlank FAILED | |
Exception in thread "main" picocli.CommandLine$ExecutionException: Error while running command (ftl.cli.firebase.test.android.AndroidRunCommand@71454b9d): com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden | |
{ | |
"code" : 403, | |
"errors" : [ { |
package com.example; | |
import org.junit.Test; | |
import java.util.Random; | |
import java.util.concurrent.TimeUnit; | |
import io.reactivex.Observable; | |
import io.reactivex.observers.TestObserver; | |
import io.reactivex.schedulers.Schedulers; |
package com.example; | |
import org.junit.Test; | |
import java.util.ArrayList; | |
import java.util.List; | |
import io.reactivex.Observable; | |
import io.reactivex.exceptions.CompositeException; | |
import io.reactivex.exceptions.Exceptions; |
package com.example; | |
import java.util.ArrayList; | |
import java.util.HashSet; | |
import java.util.List; | |
import java.util.Objects; | |
import java.util.Set; | |
public class Temp { |
import android.util.Log; | |
import java.util.List; | |
import okhttp3.Interceptor; | |
import okhttp3.OkHttpClient; | |
import okhttp3.logging.HttpLoggingInterceptor; | |
public class Test { |
package com.example; | |
import android.annotation.SuppressLint; | |
import android.os.Handler; | |
import android.os.Looper; | |
import android.util.Log; | |
import io.reactivex.Emitter; | |
import io.reactivex.Observable; | |
import io.reactivex.ObservableOnSubscribe; |
@Override | |
public Single<User2> updatePhone(String phoneNumber) { | |
String userId = user.getId(); | |
// even though server allows a user to have multiple phone numbers; product requirements are that user can have | |
// only 0 or 1 phone number. So start off by removing ALL existing phone numbers, and then adding new one. | |
// This is how iOS does it. | |
// things to note: | |
// * we can only remove phones one-by-one; there is no batch web request |