在uni-app里使用tv-focusable打包apk时报错如何解决

很多小可爱反应使用uni-app框架集成 tv-focusable 进行开发,打包成 apk 的情况下会出现如下错误,

 reportJSException >>>> exception function:createInstanceContext, exception:white screen 
 cause create instanceContext failed,check js stack ->Uncaught TypeError: 
 Cannot read property 'CustomEvent' of undefined

今天就这个问题,聊一下产生的原因,以及解决方案:

首先看下uni-app官放文档的说明,注意红线部分。
在这里插入图片描述
也就是说 uni-app 在非 h5 端开发时,会去掉浏览器自带的一些对象,其中就包括 CustomEvent 自定义事件,但只要涉及到自定义事件的库都需要用到这个 api,不巧的是 tv-focusable 也用到了,所以 uni-app 在打包成 apk 的时候编译不通过,从而报这个错误。

说完了报错产生的原因,接下来说下解决方案,其实很简单:
1.首先,修改基础路径: manifest.json修改 “base”:"./" 然后打包成h5,然后你确保可以在浏览器里运行测试一下,如果一切正常,就可以进行下一步了;

2.将刚才生成的 h5 项目用 hbuilder 再转成 APP。(如果你不知道怎么转,可以看看下面的链接)
如何将h5打包成apk,请戳这里

要设置一个 Android 应用在屏幕最前面的话,你需要添加 SYSTEM_ALERT_WINDOW 权限,并使用 WindowManager 来创建一个 TYPE_SYSTEM_ALERT 类型的窗口。这样创建的窗口会悬浮在其他应用程序的上面,让你的应用始终处于最前面。 以下是一个示例代码,可以让你的应用在屏幕最前面显示: ``` public class MainActivity extends Activity { private WindowManager mWindowManager; private View mFloatingView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取 WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); // 创建一个 TYPE_SYSTEM_ALERT 窗口 WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT); params.gravity = Gravity.TOP | Gravity.LEFT; params.x = 0; params.y = 0; params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; // 加载一个 View 来显示在窗口上 mFloatingView = LayoutInflater.from(this).inflate(R.layout.floating_view, null); // 把 View 添加到 WindowManager 中 mWindowManager.addView(mFloatingView, params); } @Override protected void onDestroy() { super.onDestroy(); // 移除 View if (mFloatingView != null) { mWindowManager.removeView(mFloatingView); } } } ``` 当你运行应用,你将看到一个悬浮的视图显示在屏幕上,这个视图会一直处于最前面,直到你停止应用或关闭它。请注意,使用这种类型的窗口需要用户授权,因此你需要在应用启动请求 SYSTEM_ALERT_WINDOW 权限。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值