square / dagger

A fast dependency injector for Android and Java.
https://square.github.io/dagger/
Apache License 2.0
7.31k stars 3.06k forks source link

-- #553

Closed ghost closed 6 years ago

ghost commented 6 years ago

I'm trying to implement dagger 2 to our project with proguard enabled. but when the app installed on device (using signed apk) and try to use it we got error.

error

09-19 11:42:57.643 29833-29833/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: com.xxxx.app.apn, PID: 29833
                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxx.app.apn/com.xxxx.app.apn.ui.main.MainActivity}: java.lang.RuntimeException: Stub!
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3151)
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3261)
                                                       at android.app.ActivityThread.access$1000(ActivityThread.java:219)
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1735)
                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                       at android.os.Looper.loop(Looper.java:145)
                                                       at android.app.ActivityThread.main(ActivityThread.java:6939)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at java.lang.reflect.Method.invoke(Method.java:372)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
                                                    Caused by: java.lang.RuntimeException: Stub!
                                                       at android.app.a.c.<init>(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.module.ServiceModule.provideEnterpriseDeviceManager(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.module.ServiceModule_ProvideEnterpriseDeviceManagerFactory.get(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.module.ServiceModule_ProvideEnterpriseDeviceManagerFactory.get(Unknown Source)
                                                       at a.a.a.get(Unknown Source)
                                                       at com.xxxx.app.apn.service.KnoxServiceImpl_MembersInjector.injectMembers(Unknown Source)
                                                       at com.xxxx.app.apn.service.KnoxServiceImpl_MembersInjector.injectMembers(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.component.DaggerApplicationComponent.inject(Unknown Source)
                                                       at com.xxxx.app.apn.service.KnoxServiceImpl.<init>(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.module.ServiceModule.mKnoxService(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.module.ServiceModule_MKnoxServiceFactory.get(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.module.ServiceModule_MKnoxServiceFactory.get(Unknown Source)
                                                       at com.xxxx.app.apn.receiver.SimStateReceiverImpl_MembersInjector.injectMembers(Unknown Source)
                                                       at com.xxxx.app.apn.receiver.SimStateReceiverImpl_MembersInjector.injectMembers(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.component.DaggerApplicationComponent.inject(Unknown Source)
                                                       at com.xxxx.app.apn.receiver.SimStateReceiverImpl.<init>(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.module.ReceiverModule.provideSimStateReceiver(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.module.ReceiverModule_ProvideSimStateReceiverFactory.get(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.module.ReceiverModule_ProvideSimStateReceiverFactory.get(Unknown Source)
                                                       at a.a.a.get(Unknown Source)
                                                       at com.xxxx.app.apn.ui.main.MainActivity_MembersInjector.injectMembers(Unknown Source)
                                                       at com.xxxx.app.apn.ui.main.MainActivity_MembersInjector.injectMembers(Unknown Source)
                                                       at com.xxxx.app.apn.dagger.component.DaggerApplicationComponent.inject(Unknown Source)
                                                       at com.xxxx.app.apn.ui.main.MainActivity.initialize(Unknown Source)
                                                       at com.xxxx.app.apn.ui.main.MainActivity.onCreate(Unknown Source)
                                                       at android.app.Activity.performCreate(Activity.java:6609)
                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3104)
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3261) 
                                                       at android.app.ActivityThread.access$1000(ActivityThread.java:219) 
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1735) 
                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                       at android.os.Looper.loop(Looper.java:145) 
                                                       at android.app.ActivityThread.main(ActivityThread.java:6939) 
                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                       at java.lang.reflect.Method.invoke(Method.java:372) 
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 

gradle (app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.xxxx.app.apn"
        minSdkVersion 19
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
        dev {
            buildConfigField "String", "ELM_KEY", "\"123\""
        }
        prd {
            buildConfigField "String", "ELM_KEY", "\"123\""
        }
    }
}

dependencies {
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:25.1.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:cardview-v7:25.1.0'
    compile 'com.android.support:design:25.1.0'
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
    compile 'com.google.code.gson:gson:2.8.1'
    compile 'com.google.dagger:dagger:2.11'
    compile files('libs/edm.jar')
    compile files('libs/license.jar')
    annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
    annotationProcessor 'javax.annotation:jsr250-api:1.0'
}

proguard


####################################################################################################

# okhttp 3

-dontwarn javax.annotation.Nullable
-dontwarn javax.annotation.ParametersAreNonnullByDefault

# retrofit 2

# Platform calls Class.forName on types which do not exist on Android to determine platform.
-dontnote retrofit2.Platform
# Platform used when running on Java 8 VMs. Will not be used at runtime.
-dontwarn retrofit2.Platform$Java8
# Retain generic type information for use by reflection by converters and adapters.
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions

-dontwarn javax.annotation.**

# okio

-dontwarn okio.**

####################################################################################################

-keep class com.xxxx.app.apn.** { *; }
-keep interface com.xxxx.app.apn.** { *; }

####################################################################################################

Please need your advice.

Regards,

Paijo