Exp

Exp is only gained by running, you do not get exp from any of the other objects in a run that can give you bonus score.

Your unicorn can get bonus exp based on 3 things, rarity, PassiveExpBonus Modifer, and smashing enemies or crystals.

The Bugga bot does give 50% bonus XP if equipped (confirmed on iOS.)

Smashing enemies and crystals give a very low ammount of exp.

When you destroy 5 or more crystals each of them are worth 7 exp.

Salvage
Unicorns can also be leveled up by salvaging other unicorns. Performing a salvage has a fixed cost of Tear Stones based on the rarity of the two unicorns involved:

Salvage XP is the accumulated XP of the donor unicorn, plus the donor unicorn’s level multiplied by a base value that is set by the rarity of the donor unicorn.

Strategy
It typically does not make sense to salvage Legendary or Radiant unicorns, as their higher maximum level and higher multipliers make them more valuable to save for fusing.

After a unicorn is Leveled Up by Salvage, it enters an "In Workshop" state. Unicorns which are "In Workshop" are not counted as being in your stable. This allows you to accumulate more unicorns then are allowed in your stable by leaving extra unicorns in this state until you need them.

Tear Stones can be converted to XP at approximately a 1 to 1 conversion by using the Tear Forge to create common, rare, and epic unicorns, and accumulating their base XP values in a common unicorn (with it's low transaction costs.) That common unicorn can then be salvaged to upgrade one of your runners.