For anyone else stumbling upon this: I’ve got my JoyCons working with RetroArch in Android (LineageOS) on the Switch. (I haven’t tested this with JoyCons connected to Android on any other device.)
You’ll need to install the joycon fix via the built-in TWRP if you haven’t already (just like you would have done if you installed GApps or shieldifier). This was all in the official XDA thread for installing LineageOS on your Switch. You’ll also need to install Magisk the same way (or get yourself root access some other way).
Then you need to replace the existing autoconfig file for the JoyCon with a file that contains the following:
input_driver = "android"
input_device = "Nintendo JoyCons"
input_device_display_name = "Nintendo JoyCons"
input_vendor_id = "1406"
input_product_id = "8198"
input_b_btn = "97"
input_y_btn = "99"
input_select_btn = "109"
input_start_btn = "108"
input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"
input_a_btn = "96"
input_x_btn = "100"
input_l_btn = "102"
input_r_btn = "103"
input_l2_btn = "104"
input_r2_btn = "105"
input_l3_btn = "106"
input_r3_btn = "107"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+2"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"
input_b_btn_label = "B"
input_y_btn_label = "Y"
input_select_btn_label = "Minus"
input_start_btn_label = "Plus"
input_up_btn_label = "D-Pad Up"
input_down_btn_label = "D-Pad Down"
input_left_btn_label = "D-Pad Left"
input_right_btn_label = "D-Pad Right"
input_a_btn_label = "A"
input_x_btn_label = "X"
input_l_btn_label = "Left Bumper"
input_r_btn_label = "Right Bumper"
input_l2_axis_label = "Left Trigger"
input_r2_axis_label = "Right Trigger"
input_l3_btn_label = "Left Thumb"
input_r3_btn_label = "Right Thumb"
input_l_x_plus_axis_label = "Left Analog X+"
input_l_x_minus_axis_label = "Left Analog X-"
input_l_y_plus_axis_label = "Left Analog Y+"
input_l_y_minus_axis_label = "Left Analog Y-"
input_r_x_plus_axis_label = "Right Analog X+"
input_r_x_minus_axis_label = "Right Analog X-"
input_r_y_plus_axis_label = "Right Analog Y+"
input_r_y_minus_axis_label = "Right Analog Y-"
The file, by default, is found somewhere like /data/data/com.retroarch/autoconfigs/android. That’s why you need root access.
You’ll be able to use the analog sticks in the GUI, but they won’t work in games because despite the system seeing them as analog sticks, they are only sending digital data (8-point D-Pad) so RetroArch isn’t getting the actual data it needs from them to use them as analog sticks. It’s going to take someone making a new driver for Android for them to work as analog sticks, so keep checking in on the development over at XDA.