kotoMJ / security-showcase-android

Sample application pointing some security related practices on Android device.
130 stars 11 forks source link

Unable to use new KeystoreCompat 2.x #35

Closed kotoMJ closed 6 years ago

kotoMJ commented 6 years ago

android/app/build/tmp/kapt3/stubs/rostiDebug/cz/koto/securityshowcase/ShowcaseKeystoreCompatConfig.java:4: error: cannot access KeystoreCompatConfigM e: e: public final class ShowcaseKeystoreCompatConfig extends cz.koto.keystorecompat.compat.KeystoreCompatConfig { e: ^ e: class file for cz.koto.keystorecompat23.compat.KeystoreCompatConfigM not found e: java.lang.IllegalStateException: failed to analyze: java.lang.AssertionError: annotation tree hasn't been attributed yet: @kotlin.Metadata(mv = {1, 1, 9}, bv = {1, 0, 2}, k = 1, d1 = {"\u0000\u0018\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0000\n\u0002\u0010\u000b\n\u0000\u0018\u00002\u00020\u0001B\u0005\u00a2\u0006\u0002\u0010\u0002J\b\u0010\u0003\u001a\u00020\u0004H\u0016J\b\u0010\u0005\u001a\u00020\u0006H\u0016\u00a8\u0006\u0007"}, d2 = {"Lcz/koto/securityshowcase/ShowcaseKeystoreCompatConfig;", "Lcz/koto/keystorecompat/compat/KeystoreCompatConfig;", "()V", "getDialogDismissThreshold", "", "isRootDetectionEnabled", "", "app_rostiDebug"})

kotoMJ commented 6 years ago

It seems, that libraries(e.g. android-keystore-compat-23) which are base for android-keystore-compat are not exposed together with android-keystore-compat. Thus their reference from the application is failing.

If I use assembling of the application from sources (instead of loading android-keystore-compat from JCenter/or aar) it works. So I have to solve proper distribution of all sub-libraries at once.

Will try to solve it ASAP.

kotoMJ commented 6 years ago

Internal (implementation related) libraries were already published to Bintray (to solve issue with unaccessible dependencies). Now it's waiting for JCenter to approve new packages to be distributed.

kotoMJ commented 6 years ago

This issue is currently fixed, but installation requires to list all necessary dependencies in the app:

dependencies {
    api("cz.koto:android-keystore-compat:2.0.1") {
        exclude group: 'com.android.support'
    }
    api("cz.koto:android-keystore-compat-base:2.0.1")
    api("cz.koto:android-keystore-compat-19:2.0.1")
    api("cz.koto:android-keystore-compat-21:2.0.1")
    api("cz.koto:android-keystore-compat-23:2.0.1")
    implementation('com.scottyab:rootbeer-lib:0.0.6') {
        exclude group: 'com.android.support'
    }
}

I understand this is not ideal and will work on better solution how to simplify installation.