android
文章平均质量分 59
kuanxu
这个作者很懒,什么都没留下…
展开
-
解决android4.4以下sslv3 alert handshake failure和protocol TLSv1.3 is not supported的问题
解决android4.4以下sslv3 alert handshake failure和protocol TLSv1.3 is not supported的问题原创 2023-05-18 17:54:49 · 1629 阅读 · 0 评论 -
Targeting S+ (version 31 and above) requires that an explicit value for android
Targeting S+, build.gradle, sdk version 设置原创 2022-09-28 14:52:19 · 6321 阅读 · 2 评论 -
Flutter 强制获取焦点的问题
在用flutter框架实现Flutter TV app的过程中,光标切换是个大问题: 从主菜单到子菜单,从子菜单到目标选项,各个目标选项之间,都需要光标切换。而且在Tv上无法触摸,主要靠遥控器上的上、下、左、右键来实现。所以光标的各个方向移动有时候需要以下方法指定才能实现。FocusScope.of(context).requestFocus(expectFocus); 但是这个方法有时候并不能得到想要的效果,譬如从menu1按右键光标正常会跳到menu2,但事实上却...原创 2021-12-21 15:11:35 · 2856 阅读 · 0 评论 -
混淆编译造成 java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in “/data/app-lib/xx/xx.so”
android app运行的时候偶尔会遇到加载so文件的问题,譬如java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/app-lib/xxx/xxx.so"今天遇到这种问题时,我按照网上的资料进行如下检查:检查对应编译目录lib下有没有对应so文件; 检查对应module下的 build.gradle 没有如下条件 sourceSets { main { jniLibs.原创 2021-11-26 12:04:04 · 3584 阅读 · 0 评论 -
Flutter String 的 isEmpty 使用
Flutter 里的String isEmpty 只是判断string是否为空,而不能判断string是否null,所以判断是否为空的前提,要判断str != null;不然,一旦字符串为空为null,调用isEmpty时就会出现以下exception,[ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: NoSuchMethodError: The getter 'isEmpty' was called on null.原创 2021-11-24 17:25:02 · 2912 阅读 · 0 评论 -
No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
前段时间由于要进行ndk编译,把AS里的 NDK 版本降了,同时在Default ProjectStucture里面设置了新的ndk路径现在问题是,ndk项目里这样的配置没有问题,但是在flutter项目里,这种ndk配置会出现问题,如会有如下编译错误> No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi因为之前没有改nd.原创 2021-11-18 16:26:47 · 1714 阅读 · 0 评论 -
Flutter源码中的特殊操作符、关键字
相对于java,dart代码里经常会遇到一些特殊的操作符号,如级联操作.., 问号相关操作符?, ??, ??=, ?. , 内联 …, …?, 还有 with, mixin…on等。这里对dart中的常用特殊操作符做一些记录一、级联符号 ..第一次遇到dart 级联符号(..)实在flutter app的入口函数中,如下:void main() => runApp(MyApp());void runApp(Widget app) { WidgetsFlutterBinding...原创 2021-11-17 17:56:13 · 2989 阅读 · 0 评论 -
armembi 中的“embi”是什么意思?
NDK 编译好几年没搞过了,最近由于项目需求重新复习了相关知识点,查查资料,编译还算顺利。其中遇到 Armembi 这个名词缩写,只知道跟动态库.so 文件有关,具体不知道为什么这样命名,所以这里重点记录一下。EABI ------------Embedded application binary interface, 顾名思义, 嵌入式应用二进制文件接口,是描述可连接目标代码,库目标代码,可执行文件影像,如何连接,执行和调试,以及目标代码生成过程,和c, c++语言接口的规范,是编译连接工具的基础原创 2021-11-05 14:17:38 · 2440 阅读 · 0 评论 -
Android Studio开发工具使用过程中遇到的问题及解决方法
自从把AS工具升级到4.0版本,并安装Flutter开发插件后,AS工具就没那么好使了。经常会出现很多莫名奇妙的问题:找不到Class定义(明明有定义),找不到导入文件,java文件显示xml内容,A文件显示成B文件内容等等。 不知道是Flutter插件的原因,还是V4.0版本的bug。总之,混乱不堪,非常影响开发效率。下面介绍一下几个主要问题的解决方法:1、文件类型显示不对,本来每个java文件前面应该显示”J”图标的却显示“C”图标解决方法; 点击右下角的小人头像将P..原创 2021-10-14 16:07:31 · 7919 阅读 · 0 评论 -
Android开发中数据变化监听的5种方式
一、Broadcast之BroadcastReciever二、SharedPreferences 之 OnSharedPreferenceChangeListener()三、ContentProvider 之 ContentObserver四、Flutter 数据监听之 EventBus五、Flutter 数据监听之 ChangeNotifier日常Android开发中总会遇到数据变化监听的需求,譬如一个数据变化需要多个页面或者activity内容同时更新。 而Android中通..原创 2021-10-09 12:25:35 · 8951 阅读 · 0 评论 -
Flutter TV App 中如何防止按键过快
在刚刚开发完成的Flutter TV app中,遇到过好多个棘手的问题,最后都迎刃而解了。正好有空就一个个总结出来。第一个问题:如何处理flutter TV 按键过快?机顶盒app开发中,内存问题首要考虑的,因为大多数的机顶盒内存较低,它们的Ram在2G以下,特别是很多内存1G, 500M的盒子。app在这种盒子上运行时动不动就闪退,着实令人头疼。由于硬件内存的限制,用遥控器切换app页面时,速度会很慢,偶尔还会发生ANR,这种情况下如果不控制遥控...原创 2021-09-29 15:34:59 · 617 阅读 · 0 评论 -
Native heap 和Dalvik heap 学习总结
最近在开发flutter app,发现flutter app的内存使用和之前android java app 有很大区别,flutter app 运行时Native heap占大头,android java app运行时, dalvik heep 占大头。于是重新学习了一遍android内存知识,大致总结如下1,进程的地址空间分为stack和heap,stack是栈,由操作系统控制, 函数地址、参数,内部变量都在栈上,栈不大,一般几MBheap是堆,由程序员控制,所以malloc, ne原创 2021-09-29 11:26:07 · 1470 阅读 · 0 评论 -
Flutter开发中遇到 “从顶部向下滑动即可退出全屏模式”
近日在用flutte/dart 调试机顶盒app时,发现个别盒子一旦启动app就会进入半透明的全屏模式——安卓沉浸模式,而且还从顶部弹出一个蓝色的提示框,如下图由于机顶盒无法触摸,顶部的弹框也一直无法获得光标,只能按back键关掉弹窗并退出半透明模式。于是尝试了很多方法,设置SYSTEM_UI_FLAG_XXX 相关参数,始终毫无效果,弹窗依然会出现。最后偶然发现根组件是Container的页面就不会弹框,而根部组件是Scaffold的就会弹出蓝色的提示框。查资料发现,对于Scarfo..原创 2021-06-11 16:02:04 · 7251 阅读 · 1 评论 -
通常所说的android apk 运行内存指的是哪个XSS
关于apk内存使用情况的adb 命令有如下两个:> adb shell procrank> adb shell dumpsys meminfo apkPackageName前者运行后列出所有进程的内存使用情况,每一项都包含VSS,RSS,PSS,USS具体这几个英文缩写的意义如下:VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存) PSS- P..原创 2020-09-23 12:10:25 · 306 阅读 · 0 评论 -
RemoteViews can only be used once ,if not ,it may cause ANR in hosts such as Laucher
这两天研究flutter downloader (插件flutter_downloader: ^1.5.0)时遇到上面一个错误。 我需要在download callback fuction中获取下载进度并显示首先在initState()中实现了pr = new ProgressDialog(context, type: ProgressDialogType.Download);这是一个用来显示下载进度的RemoteView,然后再flutter download cal...原创 2020-09-10 10:55:36 · 234 阅读 · 0 评论 -
Android 与 Flutter 简单对比
特性 Android Flutter UI视图 View,视图更新只需要修改View的内容来更新部分内容, 视图页面Activity, Fragment Widget,视图更新需要通过setState()重建整个widget UI布局 Xml来编写布局,主要布局和逻辑分开,在不同文件中 Widget树来编写布局, 布局...原创 2020-09-09 15:02:24 · 781 阅读 · 0 评论 -
仅一个方法搞定Flutter Http Dio 请求
首先 pubspec.yaml里面添加dio依赖模块dio: ^3.0.10由于 http请求常用的是GET和POST方法, 请求参数格式要么JSON,要么XML,所以我在第一次封装dio http请求时用了四个方法:Get with Json, GET with XML, Post with Json, Post with xml。完成后发现好多重复代码,于是就相办法把四个方法合并成一个方法,调用的时候传入需要的参数即可譬如 请求method, 可传入“GET”, 或“POST”,..原创 2020-09-04 17:41:41 · 882 阅读 · 0 评论 -
Trying to create a platform view of unregistered type: plugins.flutter.io/webview 问题解决
今天尝试在Android 工程下的Flutter dart 代码里使用WebView 控件,来打开一个web页面但是首次结果是页面白屏,运行错误如题:大概意思是webview插件没有注册。我按照百度出来的方法,一一对照第一步,在pubspec.yaml文件里添加了 flutter 依赖dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your applic...原创 2020-08-18 18:11:11 · 4958 阅读 · 0 评论 -
关于Flutter 热更新研究
本文主要参考:https://blog.csdn.net/llew2011/article/details/104075796关于Flutter 热更新研究 经过一个多星期的Flutter热更新研究,从网上尝试了四五种方法,最终发现参考链接里方法最好用,该博主分享了两个方法以及相应代码:一、通过反射方法修改了FlutterLoader的实例instance, 在新的FlutterLoader里重载了ensureInitializationComplete()方法;二、直接重载Fl...原创 2020-07-30 11:22:01 · 790 阅读 · 0 评论 -
adb server is out of date 最新解决方案
最近androidstudio 更新了最新版本4.0.1,同时安装了dart、flutter等插件。结果不知道哪里操作不对, androidstudio 起来后每次在terminal终端输入adb connect 或者其他adb 命令时,总是频繁“adb server is out of date”,折腾了两天都无结果。我先是参考网上的解决方案 https://blog.csdn.net/liranke/article/details/42524851, 通过 netstat -ano | findst原创 2020-07-29 14:03:34 · 3363 阅读 · 0 评论 -
如何修改第三方apk的activity
最近在工作过程中遇到修改第三方apk的需求:有一个第三方apk的一个启动页面涉及到广告的显示,需要在代码里去掉相应逻辑。但是apk开发时间久远,又找不到当时的开发者。所以只能尝试自行修改。这里需要用到 Android反编译三件套 apktool 、dex2jar、jd-gui第一步:通过apk逆行解包工具 “ApkTool” 对apk进行解包选择apk 所在全路径,点击解包, 这样就会在apktool根目录下找对应解压出来的apk 资源目录,在对应AndroidManifest.xml原创 2020-07-14 17:48:28 · 3269 阅读 · 0 评论 -
奇怪的InputStream.read(buf)阻塞问题
近期本人在android开发中遇到大文件下载时阻塞问题. 客户端要下载一个文件,但每次下载到固定字节数就阻塞在那里,过一会儿就抛出SocketTimeoutException。譬如这个文件的大小为18M,用inputStream.read(buf)的方式从socket端读取数据,每次从0读到5M的时候就阻塞在那里。我分别使用了1,2,3 个线程去读取文件,每次都是阻塞在5M那里:1个线程时,负责读取0-18M, 读取5M时就阻塞在那里.2个线程时,第一个线程负责前9M,第二个线程负责后.原创 2020-06-17 16:17:45 · 2336 阅读 · 1 评论 -
原生app签名如何转换成快应用签名
在对接快应用微信支付时发现,快应用微信支付申请使用的包名和签名须是某个原生app的包名和签名。参考文档截图如下:App 微信支付申请时需要填入的包名、签名截图如下:可见快应用微信支付的申请是按一个原生app的方式申请的。包名还好,两者填写一样就行;而签名比较麻烦,因为原生app签名文件是一个*.keystore文件;快应用的签名文件是两个pem文件(certificate.pem和private.pem)。为保证签名一致(快应用签名须和微信支付申请填入的原生app签名一致),须将原...原创 2020-05-26 10:10:03 · 746 阅读 · 0 评论 -
快应用初探
目录1.快应用VS微信小程序... 12.准备工作... 23.安装快应用开发工具... 24.建立第一个快应用demo. 35.编译... 46.快应用签名... 5生成签名文件的方法... 5加入签名文件... 5Release build. 57.快应用如何横屏?... 68.快应用的本地日志log. 61.快应用VS微信小程序...原创 2020-05-08 15:01:48 · 1076 阅读 · 0 评论 -
网络图片加载缓慢问题解决方案
本人最近开发的app是一款电视机顶盒android app,该app打开后会去向服务器求取各个位置的图片,图片内容是服务器后台事先上传并配置好的。客户端哪个页面,哪个位置放哪张图片,都是服务端配置的。所以app开启后的2,3秒内可能要请求十几、甚至几十张图片,并快速显示出来。通常情况下是没有问题的,但是有个别情况图片开始加载到全部加载完毕需要一二十秒,这个问题困扰了我好久。下面是我们的解决过程。...原创 2020-04-28 10:52:53 · 5542 阅读 · 0 评论 -
如何往Github上传代码
第一次上传github,前后耗时一下午才搞定。中间遇到一些小麻烦,解决过程记录下来,供以后参考。一、Github 网页上的操作www.github.com 官网上注册账号,包括绑定邮箱,邮箱激活等 创建一个新的branch 在branch下创建一个代码仓库repository 建好之后,点击进入repository页面,点击右边绿色按钮”Clone and download”, 在出...原创 2020-04-24 10:52:13 · 249 阅读 · 0 评论 -
关于ContentProvider/ContentResolver的使用---- Android 进程间通讯之二
关ContentProvider/ContentResolver的使用---- Android 进程间通讯之二ContentProvider 顾名思义,内容提供者。至于其内部内容是以什么样的形式存储的,如 数据库sqlite,文件等方式,对于使用者是不关心的,使用者来说只要能获取、更新数据就行。关于ContentProvider/ContentResolver的示例,网上已经有很多,...原创 2020-04-23 11:55:06 · 309 阅读 · 0 评论 -
android 开发/测试人员 常用adb命令
前一篇整理了如何删除预装app, 发现android 开发人员和QA 有必要掌握一些常用adb 使用方法1, 连接某设备命令: adb connect 192.168.xx.xx备注: 后面ip为android 某设备ip, 连接之前最好确认该设备adb 功能已经打开2,连接进入设备shell命令:adb shell备注:adb 连接设备成功后,执行该命...原创 2020-04-16 13:43:10 · 292 阅读 · 0 评论 -
如何彻底卸载\删除android设备上预装app
作为apk开发人员,经常会遇到要在已预装自家apk的设备上调试新版的apk,这时候就会遇到签名冲突或者已安装错误提示 INSTALL_FAILED_ALREADY_EXISTS。这个时候就需要卸载掉该预装app。由于预装app比较特殊,通常很难通过下面常用方法卸载掉:方法一:用户通过遥控器在机顶盒上卸载,尝试卸载预装app时可能会提示“系统app,无法卸载”方法二:通过adb 命令...原创 2020-04-09 12:05:21 · 5985 阅读 · 0 评论 -
第三方App 如何停掉IPTV EPG 背景音
随着当前IPTV EPG 技术的广泛应用,从机顶盒EPG 直播、点播界面拉起android 第三方apk时遇到的问题也越来越多,背景音的问题就是其中一个。目前某些省份的机顶盒是这样,EPG拉起android 第三方 apk后, EPG的视频播放并没有pause掉。虽然EPG变成后台运行,第三方apk在前台运行,用户已经看不到视频画面,但是EPG 音频依然存在。用户在使用第三方app时会觉...原创 2020-04-07 15:41:57 · 766 阅读 · 0 评论 -
Android开发中的drawable-(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的区别以及联系
1.drawable-(hdpi,mdpi,ldpi)的区别dpi是“dot per inch”的缩写,每英寸像素数。四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。2.WVGA,HVGA,Q转载 2012-04-13 18:02:56 · 950 阅读 · 0 评论 -
通过wifi连接android设备的方法
最近由于要在另外一台android设备上调试代码,在本机PC上查看其log.两台机器离的比较远, 无法用usb直接连接,于是在网上找了很多资料,最找使用adb connect方法解决了该问题。解决过程如下:1, 确认本机PC 没有任何adb 设备连接,包括模拟器和usb连接, 即 使用“adb devices” 命令后, 列表显示为空, 这个是为了后面敲命令容易一些2, 将远程an原创 2012-04-10 13:03:44 · 32414 阅读 · 3 评论 -
解决 DatabaseObjectNotClosedException
今天在运行测试应用的时候出现以下exception: 04-05 17:09:21.988: E/Database(3101):android.database.sqlite.DatabaseObjectNotClosedException: Application did notclose the cursor or database object that was opened her原创 2012-04-06 17:47:29 · 13252 阅读 · 2 评论 -
Android Activity 多个状态函数之间的执行顺序
以前总以为activity间跳转的时候只需要onPause, onResume就行了,今天做了试验发现不是这样,除了执行这两个函数之外,跳转的时候onStart(), onStop也要执行,而只有屏幕背光灯启动关闭时候只执行onResume()或者onPause()具体情况的执行过程如下:动作一:Activity第一次启动时onCreate() ——〉onStart()——〉on原创 2012-04-01 15:30:44 · 5570 阅读 · 0 评论 -
Ubuntu 下 Eclipse DDMS 显示设备名为乱码 “?????? “的解决方法
今天终于装好了ubuntu android的开发环境,可是用USB线连接安桌手机到ubuntu 主机后,adb device 命令列出的设备名是?????????,搞了半天不知为什么。后来用sudo adb kill-server 停止adb服务接着 sudo adb start-server 重启adb服务然后 sudo adb device 显示出的设备名就是正常的。个人猜测是原创 2012-03-29 16:48:58 · 2196 阅读 · 0 评论 -
linux 下设置环境变量PATH的方法
在编译或者执行一些常用的 exe 文件时,要么cd很多步到该文件所在目录,要不执行时打很长的路径名,两方法都很麻烦,原因是我的exe文件所在目录不在环境变量里面。如果文件目录在环境变量里面,那我们直接输入可执行文件的名字即可,可用下面方法把当前路径加入环境变量export PATH=$PATH:XXXXX //XXXXX 代表当前全路径名你可以通过echo原创 2012-03-09 17:17:51 · 839 阅读 · 0 评论 -
linux 下 .o 文件, .a文件,.so文件的区别
最近在unbuntu环境下开发代码,由于很少使用linux开发环境,所以对linux编译方面了解更少,关于.o, .a, .so文件和可执行文件一直很困惑今天特意查了一下关于它们的区分:.o 就相当于windows里的obj文件 ,一个.c或.cpp文件对应一个.o文件.a 是好多个.o合在一起,用于静态连接 ,即STATIC mode,多个.a可以链接生成一个exe的可执行文件原创 2012-03-02 14:32:10 · 46133 阅读 · 2 评论 -
Android Activity 中 onActivityResult() 与 setResult()的调用时机
今天遇到这样一个问题,我在ActivityA中用startActivityForResult()方法启动了Activity B,并且在B中通过 setResult()方法给A返回值,由于某些原因不能在setResult()之后立刻调用finish()函数,只能通过用户按Back键自己退出到 A。按理说从B退出回到AactivityA过程中,A中的 onActivityResult() 应该原创 2012-04-19 14:20:31 · 17458 阅读 · 5 评论 -
Android上dip、dp、px、sp等单位说明
dip: device independent pixels(设备独立像素).不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA推荐使用这个,不依赖像素。 px: pixels(像素).不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。 pt: point,是一个标准的长度单位,1pt=1/72英寸,用转载 2012-04-20 16:31:07 · 1019 阅读 · 0 评论 -
解决Android的ListView控件滚动时背景变黑
如果大家在非黑色背景下使用ListView控件时,Android默认可能在滚动ListView时这个列表控件的背景突然变成黑色。这样可能导致程序的黑色的背景和主程序的主题既不协调。解决的方法Google在设计Android时也考虑了,在Layout的ListView中加入 android:cacheColorHint="#00000000" 的属性即可。转载 2012-06-27 16:40:43 · 563 阅读 · 0 评论