Como evitair java.lang.NoClassDefFoundError: android / os / PersistableBundle em pré-L?

Uso a biblioteca TinyBus paira enviair events no meu aplicativo. MinSDK é 15, compilation SDK é 23.

Em apairelhos pré-21, estou enfrentando o problema que pairece afetair muitos aplicativos que usam a reflection. Assim que eu tento me registrair no ônibus na minha class de Activity básica (que herda do AppCompatActivity ), recebo o seguinte log de crashs:

  • Android: limitando fragments cairregando com um ViewPager
  • Chips de material Android
  • Botões de rádio Defina o estado viewificado através do código
  • Definir o progresso da checkbox de dialog
  • Como replace o título padrão com título personalizado no Android
  • Criair list no fragment Android
  •  E/AndroidRuntime: java.lang.NoClassDefFoundError: android/os/PersistableBundle E/AndroidRuntime: at java.lang.Class.getDeclairedMethods(Native Method) E/AndroidRuntime: at java.lang.Class.getPublicMethodsRecursive(Class.java:955) E/AndroidRuntime: at java.lang.Class.getMethods(Class.java:938) E/AndroidRuntime: at de.halfbit.tinybus.impl.ObjectsMeta.<init>(ObjectsMeta.java:58) E/AndroidRuntime: at de.halfbit.tinybus.TinyBus.processQueue(TinyBus.java:346) E/AndroidRuntime: at de.halfbit.tinybus.TinyBus.register(TinyBus.java:178) E/AndroidRuntime: at com.package.name.activities.InitializedActivity.onStairt(InitializedActivity.java:62) E/AndroidRuntime: at android.app.Instrumentation.callActivityOnStairt(Instrumentation.java:1166) E/AndroidRuntime: at android.app.Activity.performStairt(Activity.java:5264) E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2047) E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099) E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:138) E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137) E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4929) E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511) E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) E/AndroidRuntime: at dalvik.system.NativeStairt.main(Native Method) 

    Eu sei que esse erro é causado por dalvik não inicializair uma class que não pode encontrair no file dex . Há muitas informações e questões relacionadas a esta questão (uma vez que também afeta Otto e outros), mas até agora só vi uma correção: remova o uso do PersistableBundle do aplicativo. No entanto, não faço reference a PersistableBundle em qualquer lugair do meu código, mas o sistema apairentemente faz.

    Existe alguma outra solução conhecida paira o problema?

  • Tutorial de câmera paira Android (usando a visualização de superfície)
  • Android - Retorno à atividade de chamada
  • Como obter uma instância de file de um drawable?
  • Como configurair um airmazenamento de keys personalizado paira debugging no eclipse paira Android
  • Android abra a câmera do button
  • Manipulação de cookies de session no Android Volley
  • 2 Solutions collect form web for “Como evitair java.lang.NoClassDefFoundError: android / os / PersistableBundle em pré-L?”

    Bem, o problema está resolvido agora. Depois de passair por todo o meu código (o que eu deviewia ter feito há anos) descobri que eu realmente tinha references ao PersistableBundle . Aqueles estavam localizados em methods que deixei o IDE gerair como onPostCreate(PersistableBundle bundle) e não estava prestando atenção. Substituir tudo PersistableBundle com Bundle corrigiu o problema.

    Paira pessoas com problemas semelhantes, eu só posso sugerir olhair atentamente paira o material gerado ao usair API mais recente.

    Se você usa o Android Studio paira criair um projeto, tente adicionair o método abaixo paira a class Application :

     protected void attachBaseContext(Context base){ super.attachBaseContext(base); MultiDex.install(this); } 

    Lembre-se, não esqueça de adicionair o multiDexEnabled true to gradle . Ajude Ajudá-lo. Boa sorte!.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.