前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Deepin运行Android应用踩坑笔记

Deepin运行Android应用踩坑笔记

原创
作者头像
drunkdream
发布2022-08-15 00:17:40
3.3K0
发布2022-08-15 00:17:40
举报
文章被收录于专栏:醉梦轩醉梦轩

0x00 前言

Deepin v20.2.2系统支持运行Android应用,于是安装了Windows/Deepin双系统后,开始了运行Android应用的踩坑之旅。以下是在这过程中的踩坑记录。

0x01 安装uengine

Deepin中是通过一个叫uengine的工具来支持Android应用的,这是一个基于anbox进行二次开发而成的工具。它的基本原理是通过在Linux内核中安装Android所需要的内核模块(如:binder、ashmem等),然后运行一个Android容器而实现的。

安装内核模块

代码语言:shell
复制
$ sudo apt install uengine-modules-dkms

安装成功后/dev目录下能够找到如下两个设备:

代码语言:txt
复制
crw-rw-rw-   1 root root    511,   0 7月  24 17:16 binder
crw-rw-rw-   1 root root     10,  58 7月  24 17:16 ashmem

如果没有看到可以尝试以下方法来手动加载:

代码语言:shell
复制
$ sudo insmod ashmem_linux
$ sudo insmod binder_linux

如果加载失败可以试下重启电脑后再加载。

安装uengine

代码语言:shell
复制
$ sudo apt install uengine

安装之后会创建两个服务:uengine-sessionuengine-container,同时在/data/uengine目录下写入Android镜像等文件。如果/data挂载的是ntfs分区的话,需要将/data/uengine软链到非ntfs分区目录,否则会导致容器启动失败。

安装之后也会新增一个网卡:uengine0,分配的ip地址是:192.168.250.1

容器成功启动后会分配到192.168.250.2这个地址,并且这个地址是可以ping通的。

容器启动的日志可以在:/data/uengine/data/logs路径下找到,在容器启动失败失败时可以根据这个日志来分析原因。

0x02 安装Android应用

安装Android应用最简单的方法是在应用市场里下载安装,也可以使用命令行安装。

代码语言:shell
复制
$ sudo apt install uengine.com.tencent.mobileqq

安装后会在桌面创建一个图表,指向的命令行是:/usr/bin/uengine-launch.sh --action=android.intent.action.MAIN --package=com.tencent.mobileqq --component=com.tencent.mobileqq.activity.SplashActivity

/usr/bin/uengine-launch.sh的内容是:

代码语言:shell
复制
#!/bin/bash

uengine launch $*

这里默认是用的多窗口模式,每个应用都是在一个新的窗口中打开的。

0x03 使用adb访问Android系统

安装adb

代码语言:shell
复制
$ sudo apt install adb

连接设备

代码语言:shell
复制
$ adb connect 192.168.250.2
192.168.250.2:5555      unauthorized

正常Android设备在连接adb调试的时候会弹出授权窗口,但是这里怎么都无法弹出授权窗口,因此需要我们手动将adb的公钥拷贝到设备的对应目录中。

代码语言:shell
复制
$ cp ~/.android/adbkey.pub /data/uengine/data/rootfs/data/misc/adb/adb_keys

重启adb server后再次连接就成功了。

0x04 解决高分辨率电脑上显示较小问题

uengine默认使用的分辨率为:540x960,而且缩放比例是1,导致在高分辨率电脑上看起来不仅窗口小,而且字也比较小。这种情况可以通过在/usr/share/uengine/appetc目录下写入应用配置文件来解决。例如,对于Android QQ可以使用以下配置:

代码语言:shell
复制
cat com.tencent.mobileqq.txt

verticalWidth 1080
verticalHeighe 1920
horizontaltWidth 1920
horizontaltHeighe 1080
verticalScreen  1  
allowFullScreen 1 
allowScreenSwitching 1
defaultFullScreen 0

logicalDensityDpi 400
physicalDpi 72
appWidth 1080
appHeight 1920
logicalWidth 1080
logicalHeight 1920

com.tencent.mobileqq要替换成实际应用的包名;logicalDensityDpi参数用于控制缩放比例,160表示没有缩放,320表示放大一倍。可以根据电脑实际情况修改这些参数值。

0x05 总结

使用容器方式跑Android系统比虚拟机方式更节省资源,启动也更快,更接近于原生应用的体验。这种方式也会逐渐成为各大Linux系统均支持的能力,具有较大的应用潜力。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 安装uengine
  • 0x02 安装Android应用
  • 0x03 使用adb访问Android系统
  • 0x04 解决高分辨率电脑上显示较小问题
  • 0x05 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档