Mobile Development 11 min read

Design and Evolution of a Mobile Live‑Streaming Platform at Beike

This article describes how Beike built, refined, and scaled a mobile live‑streaming platform—detailing early challenges, architectural pain points of version 1.0, and the systematic improvements introduced in version 2.0 such as clear boundaries, functional aggregation, layered platform design, dynamic configuration, monitoring, and zero‑cost integration to support diverse business scenarios.

Beike Product & Technology
Beike Product & Technology
Beike Product & Technology
Design and Evolution of a Mobile Live‑Streaming Platform at Beike

1. Introduction

Digital transformation has pushed many industries to move scenarios online, and Beike responded by launching live‑streaming features for agent training, virtual tours, and contract signing. The initial rollout was rushed to meet pandemic‑driven deadlines, resulting in a single‑project client built purely for functional delivery.

2. Industry Challenges

Numerous live‑streaming features (real‑time audio/video, CDN bypass, IM, document sharing, gifts, danmaku, sharing, etc.).

Designing an architecture that can handle increasingly complex multi‑scenario business.

Coordinating simultaneous development of the same page or feature by multiple developers.

Ensuring backward compatibility for new message types.

Device and OS fragmentation across iOS and Android.

Optimizing performance and resource usage on constrained mobile devices.

3. Pain Points of Beike Live 1.0

Unclear boundaries between middle‑office and front‑end logic, leading to extensive discussion and high integration cost.

Live‑SDK layers were poorly separated, causing tight coupling, low cohesion, and limited reusability.

Low degree of dynamic configuration; even minor feature tweaks required a new release.

High onboarding cost for new developers because live features were tightly coupled with business logic.

4. Improvements in Beike Live 2.0

4.1 Clear Boundaries and Responsibilities

The client now interacts only with a single business front‑end, which in turn mediates all downstream systems, simplifying the mobile side and eliminating direct calls to commerce or acquisition platforms.

4.2 Function Aggregation and Convergence

Core live‑streaming processes and functions are encapsulated into a unified platform, exposing key nodes via interfaces or abstractions to keep business logic decoupled and extensible.

4.3 Platformization and Layering

The platform separates responsibilities into four vertical layers: Basic (initialization and parameter handling), Framework (core live‑streaming functions), Controller (orchestrates framework and middle‑office), and Compose (independent reusable UI components such as likes, shares, and danmaku).

4.4 Dynamic Configuration

All functional modules are driven by runtime configuration, allowing the platform to switch between TRTC and CDN, enable or disable features (likes, co‑hosting, gifts, etc.), and adapt to different live‑streaming scenarios without code changes.

4.5 Monitoring and Logging

The platform collects logs and metrics centrally; actual reporting is delegated to the client‑side reporters, reducing coupling and version‑maintenance overhead.

4.6 Zero‑Cost Integration

Developers only need to add the appropriate library and perform minimal initialization; the platform handles the rest, letting business teams focus on their core logic.

4.6.1 Dependency Declaration

implementation(rootProject.ext.depsLibs.common_live) {
changing = true;
transitive = true;
}
implementation(rootProject.ext.depsLibs.ke_live_compose) {
changing = true;
transitive = true;
}
implementation(rootProject.ext.depsLibs.ke_live_controller) {
changing = true;
transitive = true;
}
implementation(rootProject.ext.depsLibs.ke_live_framework) {
changing = true;
transitive = true;
}
implementation(rootProject.ext.depsLibs.ke_lib_basic) {
changing = true;
transitive = true;
}

4.6.2 Initialization

// Set playback callbacks
mLiveController.setLivePlayListener(mLivePlayListener);
final String groupId = getRoomId() + "";
// Register cloud streaming callbacks
VideoManager.getInstance().registerCloudListener(groupId, mCloudListenerImpl);
// Register IM callbacks
MessageManager.getInstance().registerMessageListener(groupId, mMessageListener);

4.6.3 Resource Release

mLiveController.onRelase();
VideoManager.getInstance().unRegisterCloudListener(mCloudListenerImpl);
MessageManager.getInstance().unRegisterMessageListener(mMessageListener);

4.7 Ultimate Shape

The final architecture presents a fully decoupled, configurable, and monitorable live‑streaming platform that can be consumed by any business scenario with minimal effort.

5. Business Use Cases

The platform now supports a wide range of Beike services, including agent training, virtual negotiations, online contract signing, new‑home live broadcasts, second‑hand property tours, overseas showcases, celebratory events, and more.

6. Postscript

After the rapid iteration that satisfied early business needs, the team focused on optimizing and upgrading the live‑streaming framework. By layering the technology and encapsulating common components, the platform eliminated coupling between business, middle‑office, and front‑end, making live‑stream development almost identical to ordinary feature development and dramatically improving development efficiency.

monitoringSDKLive Streamingplatform engineeringdynamic configurationmobile architecture
Beike Product & Technology
Written by

Beike Product & Technology

As Beike's official product and technology account, we are committed to building a platform for sharing Beike's product and technology insights, targeting internet/O2O developers and product professionals. We share high-quality original articles, tech salon events, and recruitment information weekly. Welcome to follow us.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.