We have a jar-merging task running before this task that should be merging everything into allclasses.jar
On Fri, Dec 5, 2014 at 2:18 PM, Zac Bowling <z...@apportable.com> wrote: > So I'm fairly sure there is a multidex bug in the gradle plugin from an > assumption of how project are laid out. I post this on the bug tracker in a > bit but I wanted to post it here first. > > Imagine a project where your activities and services are actually being > built in subprojects or in your jar dependencies and not in the top level > app project. The Progaurd step to make the components.jar only passing in > the jar for the current Gradle project but not all the dependent ones when > it makes that components.jar. > > In BasePlugin.groovy after: > ProGuardTask proguardComponentsTask = > createShrinkingProGuardTask(project, > > "shrink${config.fullName.capitalize()}MultiDexComponents") > > The proguard is step is only using: > > proguardComponentsTask.injars(pcData.inputFiles.call().iterator().next()) > > If your dependencies are the ones that have all your classes the step will > just fail (with "java.io.IOException: The output jar is empty. Did you > specify the proper '-keep' options?"). If you get it to sort of work by > having just a single class reference work I believe that progaurd will not > produce what you expect it to feed into the next step when it that private > method in dx. > > > I think the entire process of asking Progaurd to shink may be an issue. I > believe all dependencies should be added or that the allclasses.jar should > be used instead. > > Also these two items are forced to always be added to the -keep list and > they still warn with the same error: > Note: the configuration refers to the unknown class > 'android.app.backup.BackupAgent' > Note: the configuration refers to the unknown class > 'java.lang.annotation.Annotation' > > Here is an example of what we see with the error in our cases: > > :app:shrinkDebugMultiDexComponents > Executing task ':app:shrinkDebugMultiDexComponents' (up-to-date check took > 0.002 secs) due to: > Input file > /private/tmp/TestShit/app/build/intermediates/multi-dex/debug/allclasses.jar > has changed. > Input file > /private/tmp/TestShit/app/build/intermediates/multi-dex/debug/manifest_keep.txt > has changed. > ProGuard, version 4.11 > Reading program jar > [/private/tmp/TestShit/app/build/intermediates/multi-dex/debug/allclasses.jar] > Note: the configuration refers to the unknown class > 'com.apportable.app.VerdeApplication' > Note: the configuration refers to the unknown class > 'android.content.Context' > Note: the configuration refers to the unknown class > 'com.apportable.activity.VerdeActivity' > Note: the configuration refers to the unknown class > 'com.apportable.activity.GdbServerService' > Note: the configuration refers to the unknown class > 'com.apportable.media.AudioManagerService' > Note: the configuration refers to the unknown class > 'com.apportable.activity.ManageSpaceActivity' > Note: the configuration refers to the unknown class > 'com.apportable.notifications.NotificationsBootReceiver' > Note: the configuration refers to the unknown class > 'com.apportable.notifications.NotificationsAlarmReceiver' > Note: the configuration refers to the unknown class > 'com.apportable.notifications.LocalNotificationService' > Note: the configuration refers to the unknown class > 'com.apportable.iap.BillingService' > Note: the configuration refers to the unknown class > 'com.apportable.iap.BillingReceiver' > Note: the configuration refers to the unknown class > 'com.facebook.LoginActivity' > Note: the configuration refers to the unknown class > 'com.adjust.sdk.ReferrerReceiver' > Note: the configuration refers to the unknown class > 'com.mobileapptracker.Tracker' > Note: the configuration refers to the unknown class > 'com.amazon.device.ads.AdActivity' > Note: the configuration refers to the unknown class > 'com.google.android.gms.ads.AdActivity' > Note: the configuration refers to the unknown class > 'com.millennialmedia.android.MMActivity' > Note: the configuration refers to the unknown class > 'com.millennialmedia.android.VideoPlayerActivity' > Note: the configuration refers to the unknown class > 'com.rhythmnewmedia.sdk.RhythmActivity' > Note: the configuration refers to the unknown class > 'com.rhythmnewmedia.sdk.video.RhythmVideoActivity' > Note: the configuration refers to the unknown class > 'com.applovin.adview.AppLovinInterstitialActivity' > Note: the configuration refers to the unknown class > 'com.inmobi.androidsdk.IMBrowserActivity' > Note: the configuration refers to the unknown class > 'com.jirbo.adcolony.AdColonyOverlay' > Note: the configuration refers to the unknown class > 'com.jirbo.adcolony.AdColonyFullscreen' > Note: the configuration refers to the unknown class > 'com.jirbo.adcolony.AdColonyBrowser' > Note: the configuration refers to the unknown class > 'com.rfm.sdk.HTMLBrowserView' > Note: the configuration refers to the unknown class > 'com.mopub.common.MoPubBrowser' > Note: the configuration refers to the unknown class > 'com.mopub.mobileads.MoPubActivity' > Note: the configuration refers to the unknown class > 'com.mopub.mobileads.MraidActivity' > Note: the configuration refers to the unknown class > 'com.mopub.mobileads.MraidVideoPlayerActivity' > Note: the configuration refers to the unknown class > 'com.unity3d.ads.android.view.UnityAdsFullscreenActivity' > Note: the configuration refers to the unknown class > 'com.scopely.zendeskhelper.ui.RequestActivity' > Note: the configuration refers to the unknown class > 'com.scopely.zendeskhelper.ui.RequestCompletionActivity' > Note: the configuration refers to the unknown class > 'android.app.backup.BackupAgent' > Note: the configuration refers to the unknown class > 'java.lang.annotation.Annotation' > Note: android.support.multidex.MultiDexExtractor accesses a method > 'apply()' dynamically > Note: there were 39 references to unknown classes. > You should check your configuration for typos. > ( > http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass) > Note: there were 1 accesses to class members by means of introspection. > You should consider explicitly keeping the mentioned class members > (using '-keep' or '-keepclassmembers'). > ( > http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember > ) > Note: You're ignoring all warnings! > :app:shrinkDebugMultiDexComponents FAILED > :app:shrinkDebugMultiDexComponents (Thread[main,5,main]) completed. Took > 0.122 secs. > > FAILURE: Build failed with an exception. > > * What went wrong: > Execution failed for task ':app:shrinkDebugMultiDexComponents'. > > java.io.IOException: The output jar is empty. Did you specify the proper > '-keep' options? > > * Try: > Run with --stacktrace option to get the stack trace. Run with --debug > option to get more log output. > > -- > You received this message because you are subscribed to the Google Groups > "adt-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to adt-dev+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- Xavier Ducrohet Android SDK Tech Lead Google Inc. http://developer.android.com | http://tools.android.com Please do not send me questions directly. Thanks! -- You received this message because you are subscribed to the Google Groups "adt-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to adt-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.