DroidKaigi / conference-app-2020

The Official Conference App for DroidKaigi 2020 Tokyo
https://droidkaigi.jp/2020/en/
Apache License 2.0
775 stars 327 forks source link

Make on-demand dynamic feature module #678

Closed STAR-ZERO closed 4 years ago

STAR-ZERO commented 4 years ago

Issue

Overview (Required)

Links

-

Screenshot

How to use FakeInstallSplitManager

Run script

$ script/install_fakesplit
takahirom commented 4 years ago

👀

takahirom commented 4 years ago

Works awesome!

But when adding minifyEnabled true for debug. Class not found is occurred.

    buildTypes {
        debug {
            applicationIdSuffix Packages.debugNameSuffix
            minifyEnabled true
I/ActivityManager( 1543): START u0 {flg=0x10000000 cmp=io.github.droidkaigi.confsched2020.debug/com.willowtreeapps.hyperion.crash.CrashActivity (has extras)} from uid 10064 on display 0
I/FA      (10232): Tag Manager is not found and thus will not be used
E/AndroidRuntime(10232): FATAL EXCEPTION: main
E/AndroidRuntime(10232): Process: io.github.droidkaigi.confsched2020.debug, PID: 10232
E/AndroidRuntime(10232): java.lang.RuntimeException: Unable to start activity ComponentInfo{io.github.droidkaigi.confsched2020.debug/io.github.droidkaigi.confsched2020.MainActivity}: android.view.InflateException: Binary XML file line #52: Error inflating class fragment
E/AndroidRuntime(10232):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
E/AndroidRuntime(10232):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
E/AndroidRuntime(10232):        at android.app.ActivityThread.access$800(ActivityThread.java:144)
E/AndroidRuntime(10232):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
E/AndroidRuntime(10232):        at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(10232):        at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(10232):        at android.app.ActivityThread.main(ActivityThread.java:5221)
E/AndroidRuntime(10232):        at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(10232):        at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(10232):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
E/AndroidRuntime(10232):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
E/AndroidRuntime(10232): Caused by: android.view.InflateException: Binary XML file line #52: Error inflating class fragment
E/AndroidRuntime(10232):        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
E/AndroidRuntime(10232):        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
E/AndroidRuntime(10232):        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
E/AndroidRuntime(10232):        at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
E/AndroidRuntime(10232):        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
E/AndroidRuntime(10232):        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
E/AndroidRuntime(10232):        at androidx.appcompat.app.g.c(:555)
E/AndroidRuntime(10232):        at androidx.appcompat.app.d.setContentView(:161)
E/AndroidRuntime(10232):        at androidx.databinding.f.a(:303)
E/AndroidRuntime(10232):        at androidx.databinding.f.a(:284)
E/AndroidRuntime(10232):        at io.github.droidkaigi.confsched2020.MainActivity$c.invoke(:79)
E/AndroidRuntime(10232):        at io.github.droidkaigi.confsched2020.MainActivity$c.invoke(:77)
E/AndroidRuntime(10232):        at l.r.getValue(:74)
E/AndroidRuntime(10232):        at io.github.droidkaigi.confsched2020.MainActivity.q()
E/AndroidRuntime(10232):        at io.github.droidkaigi.confsched2020.MainActivity.onCreate(:120)
E/AndroidRuntime(10232):        at android.app.Activity.performCreate(Activity.java:5937)
E/AndroidRuntime(10232):        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
E/AndroidRuntime(10232):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
E/AndroidRuntime(10232):        ... 10 more
E/AndroidRuntime(10232): Caused by: java.lang.RuntimeException: Exception inflating io.github.droidkaigi.confsched2020.debug:navigation/navigation line 70
E/AndroidRuntime(10232):        at androidx.navigation.s.a(:90)
E/AndroidRuntime(10232):        at androidx.navigation.NavController.b(:499)
E/AndroidRuntime(10232):        at androidx.navigation.NavController.b(:481)
E/AndroidRuntime(10232):        at androidx.navigation.fragment.d.c(:237)
E/AndroidRuntime(10232):        at androidx.fragment.app.Fragment.h(:2684)
E/AndroidRuntime(10232):        at androidx.fragment.app.r.c(:270)
E/AndroidRuntime(10232):        at androidx.fragment.app.m.a(:1173)
E/AndroidRuntime(10232):        at androidx.fragment.app.m.j(:1354)
E/AndroidRuntime(10232):        at androidx.fragment.app.k.onCreateView(:109)
E/AndroidRuntime(10232):        at androidx.fragment.app.h.a(:135)
E/AndroidRuntime(10232):        at androidx.fragment.app.d.a(:356)
E/AndroidRuntime(10232):        at androidx.fragment.app.d.onCreateView(:335)
E/AndroidRuntime(10232):        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
E/AndroidRuntime(10232):        ... 27 more
E/AndroidRuntime(10232): Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: io.github.droidkaigi.confsched2020.model.SessionPage
E/AndroidRuntime(10232):        at androidx.navigation.u.a(:181)
E/AndroidRuntime(10232):        at androidx.navigation.s.a(:182)
E/AndroidRuntime(10232):        at androidx.navigation.s.a(:146)
E/AndroidRuntime(10232):        at androidx.navigation.s.a(:121)
E/AndroidRuntime(10232):        at androidx.navigation.s.a(:132)
E/AndroidRuntime(10232):        at androidx.navigation.s.a(:81)
E/AndroidRuntime(10232):        ... 39 more
E/AndroidRuntime(10232): Caused by: java.lang.ClassNotFoundException: io.github.droidkaigi.confsched2020.model.SessionPage
E/AndroidRuntime(10232):        at java.lang.Class.classForName(Native Method)
E/AndroidRuntime(10232):        at java.lang.Class.forName(Class.java:308)
E/AndroidRuntime(10232):        at java.lang.Class.forName(Class.java:272)
E/AndroidRuntime(10232):        at androidx.navigation.u.a(:169)
E/AndroidRuntime(10232):        ... 44 more
E/AndroidRuntime(10232): Caused by: java.lang.ClassNotFoundException: Didn't find class "io.github.droidkaigi.confsched2020.model.SessionPage" on path: DexPathList[[zip file "/data/app/io.github.droidkaigi.confsched2020.debug-1/base.apk", zip file "/data/app/io.github.droidkaigi.confsched2020.debug-1/split_config.en.apk", zip file "/data/app/io.github.droidkaigi.confsched2020.debug-1/split_config.xxhdpi.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
E/AndroidRuntime(10232):        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E/AndroidRuntime(10232):        at j
W/ViewRootImpl( 1543): Dropping event due to no window focus: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x48, repeatCount=0, eventTime=16975354, downTime=16975354, deviceId=-1, source=0x101 }

I added some fixes for this. But it is not fixed 🤔

-keep class * implements android.os.Parcelable

-keepclassmembers class * implements android.os.Parcelable {
    static ** CREATOR;
}
STAR-ZERO commented 4 years ago

I totally forgot to check with R8. 😱 Please give me time. I will fix it.

STAR-ZERO commented 4 years ago

This crash is not due to the dynamic feature module. It also occurs in master branch.

takahirom commented 4 years ago

Thanks!I will create issue

takahirom commented 4 years ago

This was simply not able to reference proguardFile. So this is not a bug. 🙇 https://github.com/DroidKaigi/conference-app-2020/commit/a64e0ac564aea6572db6ca0ea7aea59bc9a66ce7

takahirom commented 4 years ago

I will try to make sure the universal apk still works.

takahirom commented 4 years ago

It works! Thanks! Thanks for the findings! Almost LGTM 👍 Please fix conflict 🙏

jmatsu-bot commented 4 years ago

Your apk has been deployed to https://deploygate.com/distributions/8704863c60c93294342da2ed3b40e8f1b91b898d. Anyone can try your changes via the link.

Generated by :no_entry_sign: Danger

jmatsu-bot commented 4 years ago

No issue was reported. Cool!

Generated by :no_entry_sign: Danger

takahirom commented 4 years ago

LGTM 🥇