When building an app for both iOS and Android, there are advantages to defining
a single app architecture and applying it on both platforms. Primarily, it
saves time by solving the data modeling and component interactions once for
both platforms. Additionally, maintenance is somewhat eased because changes
will be similar on both platforms.
Apple’s developer guides and the UIKit framework provide little concrete
guidance for architecting an app to be reliable and maintainable. This has lead
the iOS developer community to create many iOS app architectures and
have lively debates about their usefulness.
Android Architecture Components provide Android developers with a
general-purpose, clean, repeatable pattern for creating data-driven,
reactive-style apps. The components provide a clean separation of concerns and
abstract away many of the intricacies that arise when handling data updates
properly for every phase of the UI lifecycle. Finally, Google provides
concrete recommendations for common real-world app development
problems.
Since iOS lacks a first-party application architecture and Android now has
a very nice first-party application architecture, it seems reasonable to adopt
Android’s architecture on both platforms in instances when app delivery would
benefit from sharing an app architecture.
Roadmap
Next steps:
Improve automated test coverage
Provide full documentation comments
Improve README with getting started information
Create an example app
Setup continuous integration
Add logging
Implement Room Persistence Library
Implement Paging Library
Support tvOS, watchOS, macOS
Completed:
Implement Lifecycle components
Implement LiveData components
Enable Carthage and CocoaPods installation
Code of Conduct
Participation in this open source project is governed by the SPR Open Source
Code of Conduct, which outlines expectations for participation in SPR-managed
open source communities and steps for reporting unacceptable behavior. We are
committed to providing a welcoming and inspiring community for all. People
violating this code of conduct may be banned from the community.
See the CODEOFCONDUCT.md file for the full code of conduct.
Architecture Components
A port of Android Architecture Components to iOS.
Motivation
When building an app for both iOS and Android, there are advantages to defining a single app architecture and applying it on both platforms. Primarily, it saves time by solving the data modeling and component interactions once for both platforms. Additionally, maintenance is somewhat eased because changes will be similar on both platforms.
Apple’s developer guides and the UIKit framework provide little concrete guidance for architecting an app to be reliable and maintainable. This has lead the iOS developer community to create many iOS app architectures and have lively debates about their usefulness.
Android Architecture Components provide Android developers with a general-purpose, clean, repeatable pattern for creating data-driven, reactive-style apps. The components provide a clean separation of concerns and abstract away many of the intricacies that arise when handling data updates properly for every phase of the UI lifecycle. Finally, Google provides concrete recommendations for common real-world app development problems.
Since iOS lacks a first-party application architecture and Android now has a very nice first-party application architecture, it seems reasonable to adopt Android’s architecture on both platforms in instances when app delivery would benefit from sharing an app architecture.
Roadmap
Next steps:
Completed:
Code of Conduct
Participation in this open source project is governed by the SPR Open Source Code of Conduct, which outlines expectations for participation in SPR-managed open source communities and steps for reporting unacceptable behavior. We are committed to providing a welcoming and inspiring community for all. People violating this code of conduct may be banned from the community.
See the
CODEOFCONDUCT.md
file for the full code of conduct.License
This open source project is licensed under the terms of the Apache 2.0 license. See the
LICENSE
file. Additional, non-authoritative information about the license can be found at Choose a License, Open Source Initiative, and TLDRLegal.