Need advice about which tool to choose?Ask the StackShare community!
Android SDK vs Expo: What are the differences?
Key Differences between Android SDK and Expo
Android SDK and Expo are platforms used for developing mobile applications, but they have key differences that set them apart.
Development Environment: Android SDK requires developers to set up a development environment including installing Java Development Kit (JDK), Android Studio, and other necessary tools. On the other hand, Expo provides a more streamlined development environment where developers can start building their apps without the need for complex setups.
Codebase Access: Android SDK allows developers to have direct access to the device's native APIs and features, giving them more control over the app's functionality and performance. Meanwhile, Expo offers a higher level of abstraction, limiting access to only a curated set of APIs. This trade-off allows for faster and cross-platform development but may restrict flexibility and access to specific device capabilities.
Native Module Support: Android SDK allows developers to leverage native modules or libraries written in Java or Kotlin for specific functionalities or performance optimizations. In contrast, Expo relies heavily on JavaScript-based libraries and does not support custom native modules by default. This can be a limitation for certain advanced features or integration scenarios requiring native code.
Publishing Apps: With Android SDK, developers need to go through a more involved process of signing and optimizing the app's APK before publishing to the Google Play Store. In contrast, Expo simplifies the app publishing process by providing a command-line interface (CLI) to handle code signing and APK generation, making it easier to distribute apps.
Over-the-Air Updates: Expo has a distinct advantage when it comes to over-the-air (OTA) updates. It provides a mechanism to remotely update apps without requiring users to manually download and install new versions from the app store. This allows for quicker bug fixes and feature updates, ensuring a smoother user experience. Android SDK, on the other hand, lacks built-in OTA update capabilities, requiring users to manually update the app through the app store.
Cross-platform Development: While Android SDK primarily focuses on developing native Android applications, Expo allows for cross-platform development. Expo is built on top of React Native, enabling developers to write a single codebase that can be deployed on both iOS and Android platforms. This significantly reduces the need for platform-specific code and accelerates the development process.
In summary, Android SDK provides more control and access to native capabilities but requires a more extensive setup and maintenance process. In contrast, Expo offers a streamlined development environment, easier app publishing, and cross-platform capabilities, but with limitations in terms of custom native module support and flexibility.
Hello guys, I am new here. So, if I posted without specific guidelines, please ignore.
Basically, I am an iOS developer and developing native apps for the last three years. Recently, I started learning React Native to develop apps for both platforms. If anyone out there knows any useful resources that will become a better react native developer.
#newbie
Well, the first resource I would recommend you is my upcoming book by Packt Publishing, "Professional React Native", but it's due late January next year :) . Now jokes aside (the book's real by the way :) ), the easiest way to build a iOS/Android/Web app with React Native is to do: npm install -g expo-cli expo init some-project cd some-project expo eject
You might have heard of Expo, but trust me, stay away from it. Expo highest value is that it's an already pre-configured 3 platforms environment, but if you don't eject then you're vendor-locked to what Expo has to offer in iOS and Android, which is very poor compared to going full React Native on these platforms, they can't even handle Google Sign In properly and by the way, even if your app is 10 lines of code your app size will be over 40 MB if you don't eject, yep it's that bad, plus the performance is regular and the loading times slow, not to mention that you're stuck with their build service which the free tier makes you wait for hours for a free build slot. It's important to note that when ejecting you don't lose the Web, you simply do expo start --web to start your dev environment and expo build:web to build a static website that you can serve with any web server. Regarding state management, don't bother with "lifting state up" philosophies mixed with Context API to manage your state, lifting state is a great pattern and helps your codebase, Context is great to avoid prop-drilling, but NEVER mix them to achieve app-wide state management, for that, simply go for Redux or MobX, the hype is all about Redux, but I consider MobX far better in many aspects. However, as you're getting new into this I would recommend you start with Redux AND PLEASE grab yourself npm install @manaflair/redux-batch so that you can batch updates and don't bring your app to a crawl. Forget that "connect HOC" thing with React-Redux, don't bother for a second with it, go with Hooks and useSelector and useDispatch and the likes, it will make your code SO much cleaner and smaller. Adopt clean and new Hooks philosophy, avoid writing class components as much as possible and write function components augmented with Hooks.
We actually initially wrote a lot of networking code in Kotlin but the complexities involved prompted us to try and compile NodeJS for Android and port over all the networking logic to Node and communicate with node over the Java Native Interface.
This turned out to be a great decision considering our battery usage fell by 40% and rate of development increased by a factor of 2.
Pros of Android SDK
- Android development289
- Necessary for android155
- Android studio128
- Mobile framework86
- Backed by google82
- Platform-tools27
- Eclipse + adt plugin21
- Powerful, simple, one stop environment5
- Free3
- Больно3
Pros of Expo
- Free15
- Hot Reload13
- Easy to learn9
- Common ios and android app setup9
- Open Source6
- Streamlined6
- Builds into a React Native app5
- PWA supported2
- Plugins for web use with Next.js1