I’m not sure if there is much literature (at least I don’t know any), as the adaptive pooling layers just provide a convenient way to avoid calculating the kernel shapes for each new input size manually.
Since these layers do not store any internal parameters, you could also use the functional API of the pooling operation and compute the kernels yourself for the current input.