Is there a way to get the source code from an APK file?(android - Is there a way to get the source code from an APK file? - Stack Overflow)
I used Use the “Profile or Debug APK” feature in Android Studio and changed *.apk ending to *.zip and opened with Windows 11 native “extract files” feature.
Had idea when I get to edit framework so it redirects controller calls to correct physical inputs it would make a lot of Ouya games usable by any physical controller.
Interesting how Ouya controller maps to itself while other controllers are remapped. That creates huge mess if you try to remap controller with Android keylayout files. Linux kernel HID descriptor maps physical buttons, Android keylayout file maps physical buttons and Ouya framework APK maps physical input. What a mess!
File name is button_remap.json from Ouya framework apk
{
"devices": [
{
"alias": [
{
"name": "M.O.J.O."
}
],
"controller": [
{
"alias": [
{
"name": "Mad Catz C.T.R.L.R (Smart)",
"friendly_name": "Mad Catz C.T.R.L.R (Smart)",
"fallback": true
}
],
"axis_remap": [
{
"source_axis": 0,
"destination_axis": 0
},
{
"source_axis": 1,
"destination_axis": 1
},
{
"source_axis": 22,
"destination_axis": 18
},
{
"source_axis": 11,
"destination_axis": 11
},
{
"source_axis": 14,
"destination_axis": 14
},
{
"source_axis": 23,
"destination_axis": 17
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
},
{
"source_axis": 23,
"action_down_min": 0.5,
"action_down_max": 1,
"destination_keycode": 104
},
{
"source_axis": 22,
"action_down_min": 0.5,
"action_down_max": 1,
"destination_keycode": 105
}
],
"button": [
{
"source_keycode": 108,
"destination_keycode": 82
},
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
},
{
"source_keycode": 19,
"destination_keycode": 19
},
{
"source_keycode": 20,
"destination_keycode": 20
},
{
"source_keycode": 22,
"destination_keycode": 22
},
{
"source_keycode": 21,
"destination_keycode": 21
}
]
},
{
"alias": [
{
"name": "OUYA Game Controller",
"friendly_name": "OUYA Game Controller"
}
],
"axis_remap": [
{
"source_axis": 0,
"destination_axis": 0
},
{
"source_axis": 1,
"destination_axis": 1
},
{
"source_axis": 11,
"destination_axis": 11
},
{
"source_axis": 14,
"destination_axis": 14
},
{
"source_axis": 17,
"destination_axis": 17
},
{
"source_axis": 18,
"destination_axis": 18
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
},
{
"source_axis": 23,
"action_down_min": 0.5,
"action_down_max": 1,
"destination_keycode": 104
},
{
"source_axis": 22,
"action_down_min": 0.5,
"action_down_max": 1,
"destination_keycode": 105
}
],
"button": [
{
"source_keycode": 108,
"destination_keycode": 82
},
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
},
{
"source_keycode": 19,
"destination_keycode": 19
},
{
"source_keycode": 20,
"destination_keycode": 20
},
{
"source_keycode": 22,
"destination_keycode": 22
},
{
"source_keycode": 21,
"destination_keycode": 21
}
]
},
{
"alias": [
{
"name": "Sony Computer Entertainment Wireless Controller",
"friendly_name": "Sony Computer Entertainment Wireless Controller"
}
],
"axis_remap": [
{
"source_axis": 12,
"destination_axis": 17
},
{
"source_axis": 13,
"destination_axis": 18
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
}
],
"button": [
{
"source_keycode": 110,
"destination_keycode": 82
},
{
"source_keycode": 104,
"destination_keycode": 82
},
{
"source_keycode": 105,
"destination_keycode": 82
},
{
"source_keycode": 97,
"destination_keycode": 96
},
{
"source_keycode": 96,
"destination_keycode": 99
},
{
"source_keycode": 99,
"destination_keycode": 100
},
{
"source_keycode": 98,
"destination_keycode": 97
},
{
"source_keycode": 100,
"destination_keycode": 102
},
{
"source_keycode": 101,
"destination_keycode": 103
},
{
"source_keycode": 109,
"destination_keycode": 106
},
{
"source_keycode": 108,
"destination_keycode": 107
},
{
"source_keycode": 102,
"destination_keycode": 0
},
{
"source_keycode": 103,
"destination_keycode": 0
}
]
},
{
"alias": [
{
"name": "Microsoft X-Box 360 pad",
"friendly_name": "Microsoft X-Box 360 pad"
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
}
],
"button": [
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
}
]
}
]
},
{
"alias": [
{
"name": "OUYA",
"fallback": true
}
],
"controller": [
{
"alias": [
{
"name": "Amazon Fire Game Controller",
"friendly_name": "Amazon Fire Game Controller"
}
],
"axis_remap": [
{
"source_axis": 22,
"destination_axis": 18
},
{
"source_axis": 23,
"destination_axis": 17
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
}
],
"button": [
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
},
{
"source_keycode": 19,
"destination_keycode": 19
},
{
"source_keycode": 20,
"destination_keycode": 20
},
{
"source_keycode": 22,
"destination_keycode": 22
},
{
"source_keycode": 21,
"destination_keycode": 21
}
]
},
{
"alias": [
{
"name": "GameStick Controller",
"friendly_name": "GameStick Controller"
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
}
],
"button": [
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
},
{
"source_keycode": 19,
"destination_keycode": 19,
"exclude_source": [
16777232
]
},
{
"source_keycode": 20,
"destination_keycode": 20,
"exclude_source": [
16777232
]
},
{
"source_keycode": 22,
"destination_keycode": 22,
"exclude_source": [
16777232
]
},
{
"source_keycode": 21,
"destination_keycode": 21,
"exclude_source": [
16777232
]
}
]
},
{
"alias": [
{
"name": "Microsoft X-Box 360 pad",
"friendly_name": "Microsoft X-Box 360 pad"
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
}
],
"button": [
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
}
]
},
{
"alias": [
{
"name": "OUYA Game Controller",
"friendly_name": "OUYA Game Controller",
"fallback": true
}
],
"button": [
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
},
{
"source_keycode": 19,
"destination_keycode": 19
},
{
"source_keycode": 20,
"destination_keycode": 20
},
{
"source_keycode": 22,
"destination_keycode": 22
},
{
"source_keycode": 21,
"destination_keycode": 21
}
]
},
{
"alias": [
{
"name": "Sony Computer Entertainment Wireless Controller",
"friendly_name": "Sony Computer Entertainment Wireless Controller"
}
],
"axis_remap": [
{
"source_axis": 12,
"destination_axis": 17
},
{
"source_axis": 13,
"destination_axis": 18
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
}
],
"button": [
{
"source_keycode": 110,
"destination_keycode": 82
},
{
"source_keycode": 104,
"destination_keycode": 82
},
{
"source_keycode": 105,
"destination_keycode": 82
},
{
"source_keycode": 97,
"destination_keycode": 96
},
{
"source_keycode": 96,
"destination_keycode": 99
},
{
"source_keycode": 99,
"destination_keycode": 100
},
{
"source_keycode": 98,
"destination_keycode": 97
},
{
"source_keycode": 100,
"destination_keycode": 102
},
{
"source_keycode": 101,
"destination_keycode": 103
},
{
"source_keycode": 109,
"destination_keycode": 106
},
{
"source_keycode": 108,
"destination_keycode": 107
},
{
"source_keycode": 102,
"destination_keycode": 0
},
{
"source_keycode": 103,
"destination_keycode": 0
}
]
},
{
"alias": [
{
"name": "Generic X-Box pad",
"friendly_name": "Rock Candy X-Box 360 pad"
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
}
],
"button": [
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
}
]
},
{
"alias": [
{
"name": "PLAYSTATION(R)3 Controller",
"friendly_name": "Sony PLAYSTATION(R)3 Controller"
}
],
"button": [
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
},
{
"source_keycode": 19,
"destination_keycode": 19
},
{
"source_keycode": 20,
"destination_keycode": 20
},
{
"source_keycode": 22,
"destination_keycode": 22
},
{
"source_keycode": 21,
"destination_keycode": 21
}
]
},
{
"alias": [
{
"name": "Mad Catz C.T.R.L.R (Smart)",
"friendly_name": "Mad Catz C.T.R.L.R (Smart)"
}
],
"axis_remap": [
{
"source_axis": 23,
"destination_axis": 17
},
{
"source_axis": 22,
"destination_axis": 18
}
],
"button_is_axis": [
{
"source_axis": 16,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 19
},
{
"source_axis": 16,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 20
},
{
"source_axis": 15,
"action_down_min": 1,
"action_down_max": 1,
"destination_keycode": 22
},
{
"source_axis": 15,
"action_down_min": -1,
"action_down_max": -1,
"destination_keycode": 21
},
{
"source_axis": 23,
"action_down_min": 0.5,
"action_down_max": 1,
"destination_keycode": 104
},
{
"source_axis": 22,
"action_down_min": 0.5,
"action_down_max": 1,
"destination_keycode": 105
}
],
"button": [
{
"source_keycode": 108,
"destination_keycode": 82
},
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 106,
"destination_keycode": 106
},
{
"source_keycode": 107,
"destination_keycode": 107
},
{
"source_keycode": 19,
"destination_keycode": 19
},
{
"source_keycode": 20,
"destination_keycode": 20
},
{
"source_keycode": 22,
"destination_keycode": 22
},
{
"source_keycode": 21,
"destination_keycode": 21
}
]
},
{
"alias": [
{
"name": "NYKO PLAYPAD",
"friendly_name": "NYKO PLAYPAD"
}
],
"axis_remap": [
{
"source_axis": 23,
"destination_axis": 17
},
{
"source_axis": 22,
"destination_axis": 18
}
],
"button": [
{
"source_keycode": 96,
"destination_keycode": 96
},
{
"source_keycode": 99,
"destination_keycode": 99
},
{
"source_keycode": 100,
"destination_keycode": 100
},
{
"source_keycode": 97,
"destination_keycode": 97
},
{
"source_keycode": 102,
"destination_keycode": 102
},
{
"source_keycode": 103,
"destination_keycode": 103
},
{
"source_keycode": 19,
"destination_keycode": 19
},
{
"source_keycode": 20,
"destination_keycode": 20
},
{
"source_keycode": 22,
"destination_keycode": 22
},
{
"source_keycode": 21,
"destination_keycode": 21
}
]
},
{