时隔多年补充下云手机实现过程

本文详细介绍了如何搭建ARM云手机,包括从源码准备、AOSP定制、内核模块、ROM定制到容器部署和转码处理的步骤,以及使用hook技术和云控制的相关技术要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ARM云手机的搭建步骤(最新2023.09.07):

  • 好多年了闲来逛了下csdn发现还有这么多人想玩这个行业 瞎写写 内行看笑话就好

1. 源码准备

  • 下载AOSP的安卓源码,推荐使用清华大学镜像站。

2. 源码定制

2.1 Framework层定制:

  • PackageManagerService: 控制应用的安装、卸载和更新。
  • ActivityManagerService: 控制应用生命周期、进程管理。
  • SystemService: 添加或修改系统服务。
  • UI/UX: 调整系统界面、通知中心、锁屏等。

2.2 C层 (Native层)定制:

  • HAL (Hardware Abstraction Layer): 对硬件进行抽象,如相机、传感器等。

  • Libraries: 如libc, libm等进行底层调用和操作。

  • ART: Android runtime, 进行虚拟机或编译器的调整。

  • 替换mesallvmlibdrm源码以满足特定需求。

  • 编译相应的库。

3. 改机参数定制:

  • IMEI
  • Android ID
  • Device Serial Number
  • Mac Address
  • SIM Serial
  • Advertisements ID

4. 内核与模块准备

  • Android与Linux的通信主要依赖于binder和ashmem两个模块。
  • 编译ashmem_linux.kobinder_linux.ko模块。
  • 在Kernel源码中合入改造适配vmalloc代码。
  • 编译并安装上述模块到新内核。

5. ROM定制与Hook技术应用

  • 根据业务定制好ROM。
  • 如需动态调整,可以考虑使用hook技术。
  • 如需要集成代理等功能,进行相应的测试。决定是否需要屏蔽UDP。

6. 容器部署与云控制

  • 使用anbox -> robox 路线。
  • 确保容器内部有dri, input, binder, 和 ashmem的映射。
  • 集成minicapminitouch
  • 提供REST API为容器,方便外部服务或应用进行控制。
  • 为每个云手机提供一个Web控制台。
  • 使用如Kubernetes等工具进行统一管理和调度。
  • 使用如Ansible、Puppet等自动化工具进行配置管理。

7. 转码处理

  • 如果目标平台是32位的,进行相应的转码处理。

8. 容器控制与数据传输

  • 使用任意编程语言调用脚本控制容器的启动、停止、重启等。
  • 利用ADB和docker cp进行数据传输。
  • 若有个性化需求,可以考虑在hook脚本中进行修改。
  1. 源码准备
    |
    v
  2. 替换及编译依赖库
    |
    v
  3. 源码定制
    |
    v
  4. 内核与模块准备
    |
    v
  5. ROM定制
    |
    v
  6. 容器部署
    |
    v
  7. 转码处理
    |
    v
  8. 容器控制与数据传输
Android中设置定时器每隔5分钟执行一次,可以使用AlarmManager和PendingIntent。以下是基本步骤: 1. **获取权限**:首先需要运行时权限来访问系统服务,例如`Manifest.xml`文件中的`<uses-permission>`标签: ```xml <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 2. **创建计时任务**:在你的Activity或Service中,你可以创建一个Runnable或Callable对象,并封装到Handler或Thread中,作为你的定时任务。 3. **设置AlarmManager**:在需要启动定时器的地方,比如应用启动或特定操作完成后: ```java AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MINUTE, 5); // 5分钟后执行 Intent intent = new Intent(this, YourReceiver.class); intent.putExtra("timer_task", yourTaskObject); // 传递任务数据 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 60, pendingIntent); // 每天重复 ``` 4. **接收器(Receiver)**:创建一个BroadcastReceiver,它会在指定时间接收到AlarmManager发出的通知: ```java public class YourReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("timer_task".equals(intent.getStringExtra("timer_task"))) { // 执行你的定时任务 } AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); am.cancel(pendingIntent); } } ``` 记得在应用关闭时取消AlarmManager,以免后台持续消耗资源: ```java @Override protected void onDestroy() { super.onDestroy(); if (pendingIntent != null) { AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.cancel(pendingIntent); } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小日子野一天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值