目录

  • 一、引子
  • 二、如何启动
    • 1. 获取到App的包名和Launcher路径
    • 2. 测试启动DSvideo
    • 3. 解决方案
  • 三、成品及使用方法
    • 1. 安装方法
    • 2. 成品打包下载

一、引子

前两天,家里电视炸了(你没看错,就是炸了,前一天还好好的,睡一觉起来看到屏幕自己裂了),第二天买了个某米5(别喷,便宜就行),想着家里那台只当备份用着的DS218+,加上近期媳妇在看庆某年,顺手去官网下了个AndroidTV-DSvideo安装上,但发现安装好了没图标。查了资料,发现群晖提供的App只支持AndroidTV,而不支持国内大部分深度定制的原版Android,详查后发现只是启动器的问题,ADB am start测试可以正常打开,那就简单了。

二、如何启动

使用的工具

  • ApkTool https://ibotpeaches.github.io/Apktool/
  • AnroidStudio https://developer.android.google.cn/studio
  • AdbTools https://adbdriver.com/downloads/

1. 获取到App的包名和Launcher路径

官网下载AndroidTV-DSvideo:https://www.synology.cn/zh-cn/support/download#androids
由于APP没有启动, 不能直接通过dumpsys获取到顶层应用的包名和Activity路径,所以就不能直接:adb shell dumpsys window w |findstr / |findstr name=

那么就祭出神器,ApkTool,直接先反编译解包。

 .\apktool d .\AndroidTV-DSvideo.1.1.7-10060.apk


反编译完成后,会在同目录下生成Apk同名的文件夹,进去查看AndroidManifest.xml

  <application android:allowBackup="true" android:icon="@mipmap/app_icon" android:label="@string/app_name" android:largeHeap="true" android:name="com.synology.dsvideo.App" android:supportsRtl="true" android:theme="@style/Theme.DSvideo.Leanback"><meta-data android:name="userAgentName" android:value="TV DS video"/><activity android:banner="@mipmap/card_ds_video" android:icon="@mipmap/card_ds_video" android:label="@string/app_name" android:logo="@mipmap/card_ds_video" android:name="com.synology.dsvideo.ui.WelcomeActivity" android:screenOrientation="landscape"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LEANBACK_LAUNCHER"/></intent-filter></activity>......

App包名为:com.synology.dsvideo
Launcher类名为:com.synology.dsvideo.ui.WelcomeActivity

2. 测试启动DSvideo

首先测试用ADB启动该Activity,是否能成功:

adb shell am start -n {包名(package)}/{包名}.{Activity路径}

adb shell am start -n com.synology.dsvideo/com.synology.dsvideo.ui.WelcomeActivity

然后电视正常打开了DsVideo,登陆后测试读取、播放一切正常,那么就是只是一个没图标的问题了。

3. 解决方案

初步想了两种方案:
1 . 给AndroidManifest中WelcomeActivity节点加上

 <category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.LAUNCHER" />

让AndroidTV的应用变为普通App(未测试、理论可行),重新打包后安装。但该方法不通用,每次官方App更新后,就需要重新再去编辑打包一次,而且重打包过程中可能会遇到各种坑,只是为了给媳妇看一个视频,没必要这么折腾,放弃。

2 . 写个有桌面图标的App,来启动AndroidTV-DSVideo。通用性好,官方升级也能一直使用。
果断选择第二种方案

0x00 一句代码:

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;public class MainActivity extends Activity {private static final String PACKAGE = "com.synology.dsvideo";private static final String ACTIVITY = ".ui.WelcomeActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 此处应先做一个包名判断,是否已安装AndroidTV-DSvideo// 需要的自行百度,两句代码的问题Intent intent = new Intent();intent.setComponent(new ComponentName(PACKAGE, PACKAGE + ACTIVITY));startActivity(intent);finish();}
}

0x01 再用Android自带的透明主题处理APP启动时的白屏:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.itxca.dsgo"><applicationandroid:allowBackup="true"android:icon="@drawable/app_icon"android:label="@string/app_name"android:supportsRtl="true"android:theme="@android:style/Theme.Translucent" ><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
</manifest>

0x02 删除build.gradle中多余的AndroidX引用,压缩Apk体积

dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])
}

0x03 从刚解包的AndroidTV-DSVideo文件夹中…\res\mipmap-xxxhdpi\app_icon.png拷贝一个图标,删除工程内多余的图片及其它资源。

0x04 最后AndroidStudio -> Build -> Generate Signed Bundle/APK…打包apk。然后adb install把刚编译的apk安装到电视上,图标出来了,点击后会自动启动AndroidTV-DSideo,完成。

三、成品及使用方法

1. 安装方法

U盘、带WIFI安装的文件管理器、ADB,由于各个电视厂家的安装方法不尽相同,这里只给出家里使用的某米5安装方法。

  1. 设置 -> 关于 -> 产品型号,然后在产品型号上快速的按确认键五次以上,提示“您已经处于开发者模式”。
  2. 回到设置页,依次点击:账号与安全->ADB调试,按向右方向键选择允许,然后你选择确定打开。
  3. 在设置 -> 关于 里查看电视IP
  4. adb connect ip连接上电视(注意电视弹出的是否允许调试要选择允许)
  5. adb install 安装
adb conncet 192.168.1.88
adb install AndroidTV-DSvideo.1.1.7-10060.apk
adb install DsVideoLauncher.apk

提示无Adb的,可以在这个网站下载https://adbdriver.com/downloads/

2. 成品打包下载

https://download.csdn.net/download/hx7013/12065316

原帖地址:https://blog.csdn.net/hx7013/article/details/103764083,转载请注明。

群晖AndroidTV-DSvideo,电视安装后无图标解决方案及原理相关推荐

  1. 【群晖秘籍】如何在群晖中安装Redis数据库,群晖如何使用套件安装Redis(已解决无法访问问题)!

    文章目录 准备 安装 解决无法访问的问题 原文链接 准备 首先我们需要为我们的群晖添加第三方套件源 具体的添加方式参考群晖添加第三方套件 安装 在确保已经安装好了第三方套件源后,我们就可以来正式的安装 ...

  2. 群晖NAS下docker安装MySql

    群晖NAS下docker安装mysql 8.0.31 目前我使用的是在黑群晖 6.2DM 下的 docker 内刷入一个官方的 MySQL 版本是8.0.31 (推荐选择 Debian 的发行版, 因 ...

  3. 内网穿透远程群晖NAS:免费安装cpolar内网穿透 1/6

    系列文章 内网穿透远程群晖NAS:免费安装cpolar内网穿透 1/6 内网穿透远程群晖NAS:映射5000端口实现公网访问群晖 2/6 内网穿透远程群晖NAS:配置cpolar内网穿透生成数据隧道 ...

  4. 群晖室开虚拟机安装于服务器,如何在虚拟机上安装黑群晖?

    为什么要选择在虚拟机上安装黑群辉呢?如果你使用的是功能强大的服务器的话,使用虚拟机安装黑群辉可以更好的利用服务器的资源.这样一台Windows服务器即可通过虚拟机实现多种操作系统并存从而实现功能拓展, ...

  5. 不买NAS,也能用cpolar搭建私有云盘4 (设定群晖共享文件夹并安装cpolar)

    系列文章 不买NAS,也能用cpolar搭建私有云盘1 (虚拟机安装群晖) 不买NAS,也能用cpolar搭建私有云盘2 (安装Synology Assistant) 不买NAS,也能用cpolar搭 ...

  6. 不买NAS搭建私有云盘:设定群晖共享文件夹并安装cpolar 4-5

    系列文章 ​​​​​​​不买NAS搭建私有云盘:虚拟机安装群晖 1-5 不买NAS搭建私有云盘:安装Synology Assistant 2-5 不买NAS搭建私有云盘:群晖系统存储空间设置 3-5 ...

  7. VirtualBox安装kali linux过程及安装后无法全屏问题解决方法(2)

    VirtualBox安装kali linux过程及安装后无法全屏问题解决方法(2) 参考文章: (1)VirtualBox安装kali linux过程及安装后无法全屏问题解决方法(2) (2)http ...

  8. win7安装后无声音怎么办

    我们在使用win7操作系统之后,有的小伙伴们在进入操作系统的过程中就遇到了电脑系统没有声音的情况.那么win7安装后无声音怎么办?对于这种问题小编觉得可能是因为我们电脑在系统安装的过程中,声卡驱动出现 ...

  9. 【工具】Github copilot 安装扩展后无图标问题

    [工具]Github Copilot 安装扩展后无图标问题 问题展示 如图,安装了Copilot后无图标显示 解决方案 尝试了许多方法后,联想到昨晚还能用的,于是考虑版本问题,果然昨晚更新版本了,卸载 ...

最新文章

  1. Rocksdb 与 TitanDb 原理分析 及 性能对比测试
  2. linux centos7 替换yum源
  3. 参数调用不会改变参数值
  4. 如何学习挖掘漏洞[参考多方面资料]
  5. Win7安装VC++6.0已知的兼容性问题的解决方法
  6. 腾讯 Omi 团队发布 mps - 原生小程序插上 JSX 、Less 和 Cloud 的翅膀
  7. ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService
  8. 【然天一】随机读写(4k)百盘天梯
  9. jQuery简单插件开发
  10. Vue 3 源码公布
  11. linux光纤盘刷新,Linux 在shell终端中清空DNS缓存,刷新DNS的方法(ubuntu,debian)
  12. android抠图软件,手机抠图软件
  13. Alpha Test和Alpha Blend Shader两种处理透明的方法
  14. ld链接动态库静态库问题
  15. ubuntu安装Google输入法
  16. Java获取指定时间前一小时、后一小时的时间
  17. 华硕ac68u最佳设置_【华硕RT-AC68U路由器使用总结】频段|设置|信号_摘要频道_什么值得买...
  18. 坐标系(Coordinate System)
  19. 大数据技术之名词解释
  20. pyecharts图表库学习:Pie(饼图)

热门文章

  1. 用 Prettier 美化代码
  2. 磊科nw705p虚拟服务器设置,磊科NW705P无线路由器上DHCP服务器设置操作步骤
  3. 百度网盘BaiduYunCacheFileV0.db数据库研究
  4. 牛客网编程答题测试技巧
  5. php 实现抽奖接口,PHP转盘抽奖接口实例,php转盘抽奖_PHP教程
  6. python实现朗读内容
  7. PACS医疗系统管理源码
  8. 斯坦福UE4 + C++课程学习记录 18:十字准星
  9. 不均衡学习和异常检测
  10. 互联网+医疗是机遇也是挑战