0
votes

Android Q Access Interfaces non-SDK - Landroid / Widget / Abslusview; -> Mselectorposition: I (Greylist-max-p, reflet, refusé)

Besoin d'une aide Toute façon Nous pouvons utiliser la vieille API dans Android Q.

Je suis confronté à ce problème dans https://github.com/diegocarloslima/floitantGroupExpandablierlitview p>

Tous fonctionne bien jusqu'à Android P p>

Comment puis-je activer l'accès aux interfaces non-SDK? P>

https://developer.android.com / Distribuer / Meilleures pratiques / Développement / Restrictions - Interfaces non-SDK P>

2019-09-27 18:36:25.024 13800-13800/com.app.readyb W/com.app.readyb: Accessing hidden field Landroid/widget/AbsListView;->mSelectorPosition:I (greylist-max-p, reflection, denied)
2019-09-27 18:36:25.029 13800-13800/com.app.readyb W/com.app.readyb.diegocarloslima.fgelv.lib.ReflectionUtils: java.lang.NoSuchFieldException: No field mSelectorPosition in class Landroid/widget/AbsListView; (declaration of 'android.widget.AbsListView' appears in /system/framework/framework.jar!classes3.dex)
        at java.lang.Class.getDeclaredField(Native Method)
        at com.app.readyb.diegocarloslima.fgelv.lib.ReflectionUtils.getFieldValue(ReflectionUtils.java:15)
        at com.app.readyb.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.dispatchDraw(FloatingGroupExpandableListView.java:195)
        at android.view.View.draw(View.java:21439)
        at android.widget.AbsListView.draw(AbsListView.java:4388)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1765)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1765)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1256)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1426)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at com.android.internal.policy.DecorView.draw(DecorView.java:806)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:575)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:581)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:654)
        at android.view.V
2019-09-27 18:36:25.030 13800-13800/com.app.readyb D/AndroidRuntime: Shutting down VM


    --------- beginning of crash
2019-09-27 18:36:25.046 13800-13800/com.app.readyb E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.app.readyb, PID: 13800
    java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
        at com.app.readyb.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.dispatchDraw(FloatingGroupExpandableListView.java:195)
        at android.view.View.draw(View.java:21439)
        at android.widget.AbsListView.draw(AbsListView.java:4388)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1765)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1765)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1256)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1426)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at com.android.internal.policy.DecorView.draw(DecorView.java:806)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:575)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:581)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:654)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:3610)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3418)
2019-09-27 18:36:25.046 13800-13800/com.app.readyb E/AndroidRuntime:     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2755)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
        at android.view.Choreographer.doCallbacks(Choreographer.java:790)
        at android.view.Choreographer.doFrame(Choreographer.java:725)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)


1 commentaires

Pour l'instant, si nous pouvons utiliser des règles de proguard et accessible sur Android 10, ce sera génial


3 Réponses :


1
votes

Comment puis-je activer l'accès aux interfaces non-SDK?

Ce n'est pas possible.

Fixez la bibliothèque pour ne pas tenter d'utiliser ce champ masqué. Étant donné que la bibliothèque n'a pas été mise à jour dans cinq ans, il est peu probable que le développeur original corrige le problème.

ou, trouvez une bibliothèque de remplacement et utilisez-la.

ou, créez votre propre interface utilisateur de remplacement.


4 commentaires

Merci de la mise à jour, alors existe-t-il une alternative d'une vision abslue.


Dois-je remplacer Abslistview?


@MAHESH: Vous ne pouvez pas remplacer abslistview . C'est une classe-cadre. Vous n'avez pas besoin d'essayer d'accéder à ses champs privés par réflexion.


Si possible, pouvez-vous donner un indice ou un exemple où cela se fait ou similaire afin que je puisse résoudre le problème dès que possible. Cela crée un gros problème sur mon application de production.



0
votes

Il n'y a rien de mal à votre code, mais vous utilisez un Library non Mis à jour pour Android 10 avec Target SDK Kitkat (API 19) si vraiment vraiment vieux. Vous devez remplacer cette bibliothèque avec quelque chose de plus mis à jour et basé sur un recyclerview .


0 commentaires

0
votes

sur Android P en avant, cette bibliothèque ne fonctionne pas. Vous pouvez simplement utiliser Android ALLESTABLELISTVIEW à la place. Qui sera un à un remplaçable.

Vous pouvez essayer avec le projet exemple dans FloatingGroupExpandablierView Repository et il vous suffit d'utiliser EXPERABLICISTVIEW à la place de com.diegocarloslima.fgelv.lib.floatinggroupExpandablierview . Cela devrait fonctionner.


0 commentaires