APIs (Application Programming Interfaces) for internal tasks such as toggling Bluetooth etc are often broken with newer versions of Android. Avoid using these APIs in your app to prevent compatibility issues.
Given the number of manufacturers currently producing Android handsets, differences in hardware specs can be astonishing. For instance, Samsung Electronics has its own SoCs (Systems-on-Chips) in some smart-phones while other manufacturers use SoCs by companies like Nvidia. Though consistency in terms of architecture is still present, compatibility issues may arise. To avoid these, do not make your app assume hardware specifications. Ensure that it works on a range of different devices with varying internals.
Poorly optimized interfaces also cause crashes. Any layouts which run too deep or broad may cause the app to break.
Newer versions of Android do not allow direct manipulation of settings without a user’s permission. You need to issue an ‘Intent to launch the appropriate Settings configuration screen’, through which the user will be able to manually change settings. This is obviously a safeguard for the users, but will break your app.
Be careful with orientation options and do not base your app’s settings on hardware assumptions. Newer versions of Android also tweak rotation settings to make them more accessible and user-friendly. If your app needs to use the device’s accelerometer for functioning, it may conflict with orientation.