Skip to content

Instantly share code, notes, and snippets.

View alouanemed's full-sized avatar
:octocat:
FOCUS

Mohamed Alouane alouanemed

:octocat:
FOCUS
View GitHub Profile
@Module public abstract class ActivityBindingModule {
@ActivityScoped @ContributesAndroidInjector(modules = MainModule.class)
abstract MainActivity mainActivity();
}
@alouanemed
alouanemed / config.yml
Created March 7, 2018 12:37
config.yml
version: 2.0
defaults: &defaults
working_directory: ~/code
docker:
- image: circleci/android:api-27-alpha
environment:
_JAVA_OPTIONS: "-Xmx3200m -XX:ParallelGCThreads=2 -XX:ConcGCThreads=2 -XX:ParallelGCThreads=2 -Djava.util.concurrent.ForkJoinPool.common.parallelism=2"
TERM: dumb
public abstract class BaseActivity<P extends BasePresenter<V>, V> extends DaggerAppCompatActivity
implements LoaderManager.LoaderCallbacks<P> {
...
public @Inject DispatchingAndroidInjector<Fragment> fragmentInjector;
@Override public AndroidInjector<Fragment> supportFragmentInjector() {
if (fragmentInjector != null) return fragmentInjector;
return super.supportFragmentInjector();
}
...
}
@get:Rule
val activityTestRule = object : IntentsTestRule<MainActivity>(MainActivity::class.java, true,
true) {
override fun beforeActivityLaunched() {
super.beforeActivityLaunched()
var myApp = InstrumentationRegistry.getTargetContext().applicationContext as HarvestOrderApp
myApp.dispatchingActivityInjector = MockAndroidInjectorFragment<BuyerOrdersListFragment, MainActivity> {
this.mPresenterFactory = ordersPresenterFactors
.IllegalArgumentException: No injector factory bound for Class<com.shop.app.main.MainActivity>
at dagger.android.DispatchingAndroidInjector.inject(DispatchingAndroidInjector.java:104)
at com.shop.app.main.MainActivityTest$activityTestRule$1$beforeActivityLaunched$$inlined$MockAndroidInjectorActivity$1.inject(TestUtils.kt:21)
at com.shop.app.main.MainActivityTest$activityTestRule$1$beforeActivityLaunched$$inlined$MockAndroidInjectorActivity$1.inject(Unknown Source:2)
at dagger.android.DispatchingAndroidInjector.maybeInject(DispatchingAndroidInjector.java:81)
at dagger.android.DispatchingAndroidInjector.inject(DispatchingAndroidInjector.java:102)
at dagger.android.AndroidInjection.inject(AndroidInjection.java:59)
at dagger.android.support.DaggerAppCompatActivity.onCreate(DaggerAppCompatActivity.java:43)
at com.shop.app.common.BaseActivity.onCreate(BaseActivity.java:85)
at android.app.Activity.performCreate(Activity.java:6999)
Started running tests
java.lang.IllegalArgumentException: No injector factory bound for Class<com.shop.app.main.MainActivity>
at dagger.android.DispatchingAndroidInjector.inject(DispatchingAndroidInjector.java:104)
at com.shop.app.main.MainActivityTest$activityTestRule$1$beforeActivityLaunched$$inlined$MockAndroidInjectorActivity$1.inject(TestUtils.kt:21)
at com.shop.app.main.MainActivityTest$activityTestRule$1$beforeActivityLaunched$$inlined$MockAndroidInjectorActivity$1.inject(Unknown Source:2)
at dagger.android.DispatchingAndroidInjector.maybeInject(DispatchingAndroidInjector.java:81)
at dagger.android.DispatchingAndroidInjector.inject(DispatchingAndroidInjector.java:102)
at dagger.android.AndroidInjection.inject(AndroidInjection.java:59)
@Test
fun clickOnAndroidHomeIcon_OpensNavigationAndLogOut() {
// Check that left drawer is closed at startup
onView(withId(R.id.drawer_layout))
.check(matches(isClosed(Gravity.LEFT)))
// Open Drawer
onView(withId(R.id.drawer_layout)).perform(DrawerActions.open())
// Check if drawer is open
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontpreverify
# If you want to enable optimization, remove this for a 1-2% less but longer compile time
#-dontoptimize
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
@alouanemed
alouanemed / GenerateHashkey.kt
Created October 22, 2018 12:58
generateHashkey Linked In
fun generateHashkey() {
try {
if (Build.VERSION.SDK_INT >= 28) {
@SuppressLint("WrongConstant") val packageInfo = getPackageManager().getPackageInfo(
getPAckageName(), PackageManager.GET_SIGNING_CERTIFICATES
)
val signatures = packageInfo.signingInfo.getApkContentsSigners()
val md = MessageDigest.getInstance("SHA")
for (signature in signatures) {
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
>