Preheat your oven to 350°F. Grease and flour two 9-inch round cake pans or line with parchment paper.
Whisk together the flour, baking powder, baking soda, and salt in a medium bowl.
In a large mixing bowl, add the butter, oil, and sugar and beat the mixture until it is light and fluffy.
Add the eggs to the sugar mixture one at a time, beating in between adding. Add in vanilla and coconut extract and stir well.
Gradually pour in the dry ingredients and the coconut milk, mixing as you add both.
Gently fold in the crushed pineapple.
Divide the batter evenly between the 2 prepared cake pans.
Bake for 25 to 30 minutes, or until a toothpick inserted in the center comes out clean.
Allow the cakes to cool for 10 minutes, then turn upside down and remove and transfer to a wire rack.
Make the Frosting:
Beat the cream cheese and butter in a large bowl, until smooth and creamy.
Slowly add the powdered sugar, mixing on low speed, until combined.
Pour in the coconut milk, vanilla extract, and coconut extract and beat until fluffy!
Assemble the Cake:
On a serving plate, lay down one of the cakes. Spread a generous layer of frosting over the top, spreading to completely cover the cake.
Place the second cake layer on top of the frosted cake, and spread the remaining frosting over the top and sides. The cake should be completely covered.
Sprinkle toasted coconut over the top and sides for a beautiful finish.
Garnish with crushed pineapple (make sure well drained) on top!
Chill the cake for at least 30 minutes before slicing to help the frosting set, or you can make ahead and refrigerate overnight.
Notes
Toast the shredded coconut in a dry frying pan over low heat for a few minutes to enhance its nutty flavor.