Reduce video frame rate from 60 to 30 fps without re-encoding and keeping original duration

As your smartphone is not able to play a video with 60 frames/second my initial proposal to use Avisynth on a smartphone fails because the frames have to be decoded anyway. That means that there is no other way then to reencode your videos on a computer.

Modern videos rely on saving videos as a series of I-frames, P-frames and B-frames. I-frames, also called keyframes in the commentaries to your question contain full pictures. P (like "predictive") contain difference information with regards to preceding frames. B-frames are bidirectional. This is the only known way to achieve the desired storage reduction. Your goal can only achieved by decoding all frames, even those that you want to drop because those frames serve as reference for difference information to calculate other frames. This series has to be reencoded then.

If your question is about self-recorded videos instead of other ones that are already highly compressed you would need a camera that allows you to choose a format that only records I-frames. That comes at a cost of increased storage space. I-frames are completely independent of another. Starting from there you would save the decoding processing time and simple encode every second frame into a new video. The new video would be either computationally cheap by just containing every second I-frame or you would reencode your source into something like h264. That would cost you processing time but save you storage space for the final result.

There is no escape for you from that universe of computation time against storage space where you live in.