Imported from thinkreed/code-migration-spec (
knowledge/platforms/android-harmonyos/AGENTS.md). Install upstream withnpx skills add thinkreed/code-migration-spec --skill android-harmonyos. Copyright stays with the author.
Android → HarmonyOS Knowledge
OVERVIEW
Android 平台到 HarmonyOS 平台的映射知识。
PLATFORM MAPPING
| Android | HarmonyOS | Notes |
|---|---|---|
| Activity | Ability | 页面容器 |
| Fragment | AbilitySlice | 页面片段(已废弃,使用 Ability) |
| Service | ServiceAbility | 后台服务 |
| BroadcastReceiver | CommonEventSubscriber | 广播接收 |
| ContentProvider | DataAbilityHelper | 数据共享 |
UI COMPONENT MAPPING
| Android | HarmonyOS | Notes |
|---|---|---|
| RecyclerView | ListContainer | 列表组件 |
| ListView | ListContainer | 列表组件 |
| GridView | GridContainer | 网格组件 |
| ViewPager | PageSlider | 页面切换 |
| TextView | Text | 文本显示 |
| EditText | TextField | 文本输入 |
| Button | Button | 按钮 |
| ImageView | Image | 图片显示 |
| LinearLayout | DirectionalLayout | 线性布局 |
| RelativeLayout | DependentLayout | 相对布局 |
| ConstraintLayout | StackLayout | 约束布局(近似) |
| ScrollView | ScrollView | 滚动容器 |
LIFECYCLE MAPPING
| Android | HarmonyOS | Notes |
|---|---|---|
| onCreate() | onStart() | 页面创建 |
| onStart() | onActive() | 页面激活 |
| onResume() | onActive() | 页面可见 |
| onPause() | onInactive() | 页面暂停 |
| onStop() | onBackground() | 页面停止 |
| onDestroy() | onStop() | 页面销毁 |
DATA STORAGE MAPPING
| Android | HarmonyOS | Notes |
|---|---|---|
| SharedPreferences | Preferences | 轻量数据存储 |
| SQLite | RdbStore | 关系数据库 |
| Room | DataAbilityHelper | ORM近似 |
| File | File | 文件存储 |
NETWORK MAPPING
| Android | HarmonyOS | Notes |
|---|---|---|
| Retrofit | HttpClient | HTTP 客户端 |
| OkHttp | HttpsClient | HTTP 客户端 |
| Volley | HttpClient | HTTP 客户端 |
API TRANSFORM EXAMPLES
# Activity → Ability
- source: android.app.Activity
target: ohos.aafwk.ability.Ability
transform:
- onCreate → onStart
- onDestroy → onStop
- setContentView → setUIContent
- findViewById → findComponentById
# RecyclerView → ListContainer
- source: android.support.v7.widget.RecyclerView
target: ohos.agp.components.ListContainer
transform:
- setAdapter → setItemProvider
- LinearLayoutManager → DirectionalLayout (vertical)
- Adapter → BaseItemProvider
CODE EXAMPLES
Activity → Ability
Android (Activity)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = findViewById(R.id.text_view);
tv.setText("Hello");
}
}
HarmonyOS (Ability)
public class MainAbility extends Ability {
@Override
protected void onStart(Intent intent) {
super.onStart(intent);
setUIContent(ResourceTable.Layout_ability_main);
Text tv = findComponentById(ResourceTable.Id_text_view);
tv.setText("Hello");
}
}
RecyclerView → ListContainer
Android (RecyclerView)
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new MyAdapter(dataList));
// Adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textView.setText(dataList.get(position));
}
}
HarmonyOS (ListContainer)
ListContainer listContainer = findComponentById(ResourceTable.Id_list_container);
listContainer.setItemProvider(new MyItemProvider(dataList));
// ItemProvider
public class MyItemProvider extends BaseItemProvider {
@Override
public Component getComponent(int position, Component convertComponent, ComponentContainer container) {
Text textView = new Text(container.getContext());
textView.setText(dataList.get(position));
return textView;
}
}
NOTES
- HarmonyOS 使用 ArkTS 作为推荐开发语言(类似 TypeScript)
- 部分组件名称相同但 API 不同
- 生命周期差异较大,需特别注意
- 资源引用方式不同(ResourceTable.Id_xxx vs R.id.xxx)