High Level Design (HLD) is more specific than architecture.
Architecture is about considering various constraints and making informed decisions, such as:
- Which technology to use.
- System quality attributes (e.g. performance, availability, security, usability, and so on), and what the relative priority of these is (ties into the non-functional requirements).
- Ensuring the solution can be well supported once it's in operation.
- Aligning the solution with the organizations technology strategy or enterprise architecture, etc.
High Level Design is about starting to make the architecture real:
- Logically defining components of the system, and what their roles are, and how they inter-relate.
- Referring to named technology, e.g. calling out specific parts of your chosen technology stack that need to be used, which specific frameworks or 3rd party libraries you will use.
- Calling out which specific Line of Business systems and their specific APIs that you need to integrate with.
So to take your example, the architecture might define:
- That you're building an android app to do shopping.
- That the data it will surface will come from some online services.
- What data is stored on the device, if any - e.g. user preferences.
- That users can authenticate using social media, e.g. Google.
...therefore the HLD should define:
- The specific android version your will target / support, specific dependencies etc.
- Exactly where the data services are located, exactly which ones, what data objects & values they will be providing.
- The logical data design (probably field level) for any data you need to store on the device.
- Specifics regarding how you will perform the authentication with social media providers, the code libraries to be used, etc.