安卓开发
文章平均质量分 57
烟雨江南aabb
这个作者很懒,什么都没留下…
展开
-
Android Studio gradle下载失败
Android Studio下载Gradle插件总是出现网络超时问题。其他版本的镜像,也可以替换为相应版本。替换为国内版本的镜像。原创 2024-06-04 08:55:19 · 264 阅读 · 0 评论 -
滴滴APM工具Dokit
Dokit是滴滴推出的一款APP性能分析工具。APP引入以后的界面。原创 2023-03-17 14:17:15 · 1752 阅读 · 3 评论 -
升级Android Studio Electric Eel问题汇总
问题原因:升级后,Android Studio自带的java目录不再是根目录/jre,调整为一个新目录 Studio根目录/jbr。原因:Studio编译工具识别的javaHome仍然是Studio下面的jre,但是新版本java环境已经调整为jbr。JAVA_HOME调整为Studio下对应的java根目录jbr。调整为Android Studio Java Home.问题2. 调整完成以后,发现Java目录已经切换完成。修改方法:采用软连接的方式,将jre链接到jbr。重新进行编译,已经可以了。原创 2023-02-28 11:15:54 · 2029 阅读 · 0 评论 -
Java类型擦除
什么是类型擦除Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除。问1:Java类型擦除是什么过程出现的?Java泛型编译过程会擦除掉泛型信息。 /** * 比较两个ArrayList的类型比较 * 1) 第一个ArrayList原创 2022-01-10 17:11:33 · 4550 阅读 · 0 评论 -
Java为什么设计Class与Object
1.Java为什么设计Class与Object?类模板;类对象数据。如果没有Class,怎么实例化对象呢。每次实例化对象的时候,每个对象都必须携带类信息(公共信息)。这样造成内存爆棚。Class对象为类模板,存储公共信息。2.Java中Class加载到内存什么区域?只有Java有方法区。方法区:存储代码,堆区存放对象。Class加载采用的是懒加载方式,实例化对象的时候,才加载Class类。Object obj = newObject();Object的Class类加载到方法区.原创 2021-12-13 19:59:40 · 366 阅读 · 0 评论 -
WorkManager的起源--Service变成鸡肋
根源:Android 8.0以后,谷歌开始收紧Service权限。主要表现的两个方面:1)服务前台化不再支持原来单纯的后台服务,启动服务需要前台化启动。Intent intent = new Intent(context, DownloadCenterService.class);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { context.startForegroundService(intent);} else原创 2020-11-02 16:46:39 · 891 阅读 · 0 评论 -
TextView属性和使用方法
1)是否显示字体边距android:includeFontPadding="false"false: 不显示字体内边距,true:显示字体内边距例如我们需要对齐一个图标和TextView字体顶部的时候,就需要去掉字体内边距。显示内边距,文字会自带边距,且对着系统字体大小调整,边距显示会相应变化调整系统最大字体时,可以看到文字的内边距同步扩大了。去掉内边距时,还会有大约1dp的边距,这个是固定的边距。调整系统字体大小,这个边距是没有变化的。这种情况,匹配文字对齐时,就比较原创 2020-09-27 11:50:13 · 314 阅读 · 0 评论 -
DLNA实现本地媒体服务器
Platinum播放远程的媒体,远程服务器作为媒体服务器,通过打开远程媒体url实现媒体播放。本地媒体服务器(DMS),相当于创建一个本地的WebServer,将本地的文件夹共享出去。基本处理流程:初始化Upnp->启动WebWerver并注册回调->注册设备和回调->注册控制点回调。要实现本地媒体服务器,需要实现哪些功能模块呢?1)设备描述:相关的设备描述和...原创 2019-11-20 15:48:58 · 3063 阅读 · 0 评论 -
Git命令自动补全
需要下载工具git-completion.bash1) 下载git-completion.bash$wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash下载完成以后,将文件拷贝到home目录下。$ mv xxx/git-completion.sh ...原创 2019-11-07 14:22:09 · 2105 阅读 · 1 评论 -
DLNA开发Platinum引擎构建
$ scons target=arm-android-linux build_config=Release编译Platinum库1.scon编译环境:Building for Android:ANDROID_HOST_SYSTEM = darwin-x86ANDROID_TOOLCHAIN = arm-linux-androideabi-4.9ANDROID_PLA...原创 2019-11-06 10:13:25 · 716 阅读 · 0 评论 -
Fragment页面刷新问题
Fragment页面涉及到状态变更时,需要重新加载数据进行刷新。项目中采用接收到EventBus刷新通知直接刷新页面,发现有时候界面内容没有刷新过来。解放法案:需要采用延时刷新方案。Fragment不可见时,可能导致页面刷新不成功问题。采用onResume生命周期中刷新界面最好。1)接收到刷新通知以后,设置需要刷新的标记;2)在onResume声明周期中,如果需要刷新,重新加载数据...原创 2019-11-04 21:10:21 · 2978 阅读 · 0 评论 -
ListView与不同模板视图适配器Adapter兼容问题
产品要求: 项目中同一个页面,有两个TAB,数据样式相同,但是列表展示不同。并且根据用户角色的不同,展示的列表样式会有新的变化。 另一个TAB的样式,与第一个TAB样式不相同。两者的数据Bean是相同的。解决方法:要实现这种效果,一种是使用同一个Adapter,根据不同的模板类型生成不同的子项视图;另一种方式是根据模板样式,生成不同原创 2017-04-21 14:40:30 · 389 阅读 · 0 评论 -
Weex项目集成
1、编译Weex目标$ weex compile src dist编译生成以后的文件放在目标目录dist中2. 添加对应的平台$ weex platform add [android|ios]3. 构建android和ios的APP并且运行$ weex run android构建完成以后,会在项目的platform下生成安卓的APP 项目。4. 通过Andr...原创 2018-11-27 14:10:47 · 228 阅读 · 0 评论 -
Weex和Native交互处理
1、Native加载Weex页面(js)WXSDKInstance加载URL加载本地:public void render(String template, Map<String, Object> options, String jsonInitData) { render(template, options, jsonInitData, WXRenderStrat...原创 2018-11-28 17:15:31 · 1159 阅读 · 0 评论 -
jar文件制作方法
要求:生成一个可执行的 jar包,同时jar项目依赖于另外的jar文件。需要将依赖的jar文件也打包到目标中。项目地址:https://github.com/joedan0104/JAXMLEditor工作原理:1、将当前项目生成jar包。因为当前项目含有依赖库,执行的时候会有问题。2、将所有的jar文件解压到一个目标目录,将jar文件源码进行合并;解压的时候可以采用...原创 2019-01-06 20:30:16 · 2415 阅读 · 0 评论 -
APP界面分析神器--uiautomatorviewer
问题:工作中遇到一个紧急事务,需要分析电子书语音朗读功能处理问题。需要快速定位到按钮功能的代码区域。怎么快读找到这个按钮对应的布局文件在哪?按钮的名字是什么?解决思路:1、项目全文查找,按钮的Text或者功能注释“朗读”文案;2、分析出视图结构,如果能够抓取到按钮的名字,所在的布局问题,通过ID可以快速定位出来代码区域。采用uiautomatorviewer分析界面。使...原创 2019-03-07 21:30:21 · 1078 阅读 · 0 评论 -
Retrofit+Okhttp下载TXT文件乱码问题
问题:Retrofit+Okhttp下载压缩文件的时候正常,但是获取TXT文件时出现异常。文件大小不正确,且内容出现乱码。原创 2019-03-18 09:44:41 · 874 阅读 · 1 评论 -
阿里热修复Sophix
第一章、准备工作1、申请阿里云账号;2、开通阿里云移动管理服务;3、开通阿里云移动服务平台EMAS.4、创建一个新产品,即需要接入的APP产品。第二章:接入热修复SDK您可以在应用管理页面获取配置SDK所需要的基本信息。包括:AppKey:用于AppKey是阿里云上应用的唯一标识,热修复的appId可设置AppKey。 RSA密钥: RSA密钥是保存在客户端本地用...原创 2019-04-10 10:17:37 · 965 阅读 · 0 评论 -
Android Studio常见问题汇编
编译问题:1、Ubantu系统,Android Studio编译,出现错误。android { compileSdkVersion 22 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 8 targetSdkVersion 21 } buildTy...原创 2019-04-02 11:05:15 · 290 阅读 · 0 评论 -
友盟推送的接入和遇到问题
汇总一下友盟推送的中遇到的问题。一、友盟推送集成1)申请友盟推送KEY*申请友盟推送APPKEY。如果应用已经存在了,只是新接入友盟推送。可以选择从已有应用添加。添加时注意设置包名称。添加成功以后,会显示应用相关信息:APPKEY:客户端友盟+的应用APPKEY,这是KEY在友盟+是通用的,如果是新添加的应用,友盟统计会有应用相关数据;Umeng Messa...原创 2019-08-30 18:01:25 · 6100 阅读 · 0 评论 -
Android Studio NDK调试
首先需要把header文件都给暴露出来,这样可以在其他的module中直接引用,modle.android.sources中指定需要暴露的文件:model { android { .... sources { main { jni { exportedH...原创 2019-09-19 15:24:47 · 497 阅读 · 0 评论 -
Ubantu Jenkins打包五 快速打渠道包
1. 渠道包生成原理渠道包和普通包的区别:渠道包与普通包相比,渠道相关的信息不同,代码部分相同。开发和编码的时候,渠道信息尽可能的不要采用硬编码,最好的方法是将渠道配置信息写入AndroidManifest的meta-data,程序中通过读取AndroidManifest的meta-data中的信息获取渠道对应的渠道信息。这种情况下,渠道包和普通包只有AndroidMan...原创 2018-11-25 10:32:56 · 323 阅读 · 0 评论 -
AndroidManifest的解码和重新编码
https://github.com/bihe0832/Android-GetAPKInfohttps://github.com/fourbrother/AXMLEditor打渠道包的时候,因为渠道包和标准的包,只有AndroidManifest.xml文件中一些与渠道相关的参数需要变更,如果能够实现对应编译后生成的AndroidManifest.xml替换对应的参数值,重新生成压...原创 2018-11-25 20:29:05 · 3441 阅读 · 0 评论 -
通话录音自动上传功能
通话录音原创 2017-09-29 18:10:48 · 5768 阅读 · 2 评论 -
ListView的特殊动画效果
ListView需要实现一种特殊的动画效果。1)第一次加载数据时,ListView的数据显示时,像打印机一样,一行一行的往下吐出内容;2)ListVIew滑动到最后时,自动加载下一页数据,当前的列表位置不变化。实现方案:动画效果1)列表选择到最后一个项,然后属性动画显示列表从最后一个项位置(当前列表高度位置),滚动到第一个项的位置。实现方法:dataSize原创 2017-07-01 11:07:36 · 347 阅读 · 0 评论 -
安卓动画炫酷效果项目
1、安卓开发中非常炫的效果集合http://blog.csdn.net/easyer2012/article/details/504839302、Yalantis 那些动画效果很炫的 Android 及 iOS 开源项目http://www.open-open.com/lib/view/open1431564834216.html3、收集android上开源原创 2017-06-20 16:44:06 · 307 阅读 · 0 评论 -
时间日期选择控件DateTimePicker
项目中需要使用一个日期时间选择弹窗。因为系统的日期选择和时间选择是分开的,而且显示效果与要求不一致,因此自定义时间日期弹窗。思路:这种时间日期选择控件,与系统的有些差别,因此,需要重新设计。不论是年月日,还是时分秒的单个选择的控件,都是一个数字滚轮的模式。因此基于系统的NumberPicker组件的基础上进行开发。1、NumberPicker。系统的数字选择器没原创 2017-06-20 11:00:25 · 2799 阅读 · 0 评论 -
PickerView滚轮选择
PickerView是一个滚轮选择器。已经有很多的帖子论述。Android自定义控件实战——滚动选择器PickerViewhttp://blog.csdn.net/zhongkejingwang/article/details/38513301要求:项目中需要采用滚轮选择器选择一个列表项。要求滚轮数字不进行循环播放,如果滚动到结尾,不再往下滚动。需要对原项目进行改造。原创 2017-05-11 20:31:25 · 985 阅读 · 0 评论 -
TabHost+Fragment初始化出现奔溃问题
项目中主页面采用的结构是TabHost+Fragment的结构。原创 2017-03-25 14:44:29 · 818 阅读 · 0 评论 -
View属性设置的SDK兼容问题
安卓的版本碎片化问题比较严重,View的一些基本属性设置/获取,在低版本的使用过程中,经常出错,很容易发生奔溃。有一个第三方的属性动画库nineandroids,提供了兼容方法。 GitHub地址:https://github.com/JakeWharton/NineOldAndroids 其中的类ViewHelper提供了基础属性的设置和获取方法。1)...原创 2017-03-27 16:57:55 · 434 阅读 · 0 评论 -
数字滚轮ScrollNumber
数字播放组件,支持数字和文字的播放原创 2017-02-16 19:41:28 · 3029 阅读 · 0 评论 -
RxPermision安卓运行时授权
项目中因为SDK依赖库的关系,需要将安卓SDK升级到API 23以上。升级以后就需要适配运行时授权。Google将权限分为两类,一类是Normal Permissions,这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等;另一类是Dangerous Permission,一般是涉及到用户隐私的,需要用户进行授权,比如读取sdcard、访问通讯录等。对于23以上的版本原创 2017-12-04 21:12:05 · 1193 阅读 · 0 评论 -
Android7.0 安装文件URI适配
问题:Android7.0环境中,使用下载好的安装文件安装时,出现“文件解析错误的页面”。分析:1)APK下载的过程没有问题,下载的文件能够手动安装;2)调用系统安装APK文件,Android 6.0及以下的设备能够正常安装;7.0系统安装错误。发现是因为安装过程中出错。//检测通过直接安装 Intent newIntent = new Intent(); newIntent....原创 2018-03-22 22:23:24 · 550 阅读 · 0 评论 -
带尖角的水平进度条
项目中需要使用到带尖角的水平进度条。效果如下图所示。1)用户点看好的时候,突出显示看好的百分比;2)用户点不看好时,突出显示不看好的百分比进度。分析:此控件与系统标准的进度条控件相比,尖角的显示会是一个比较麻烦的事。如果采用系统的shape的方式定义,进度条进度进度一般是直角,或者是圆角。特殊样式,9宫格drawable对象的的拉升也能实现。但是相对于多种样式的变化,相对又比...原创 2018-08-04 15:38:22 · 562 阅读 · 0 评论 -
Weex集成开发环境搭建
Weex参考资源1、Weex项目地址Weex在GitHub中https://github.com/apache/incubator-weex.git支持的环境:Support Android 4.1 (API 16), iOS 8.0+ and WebKit 534.30+. 2、Weex使用方法参考官方文档http://weex.apache.org/cn/gui...原创 2018-11-22 18:25:16 · 584 阅读 · 0 评论 -
Android Studio重复引用文件解决方法
1、多个模块含有相同的java模块。对于引用的重复库的文件,去掉重复引用的模块。1)去掉重复模块aar中引用重复: // sophix热修复 compile 'com.aliyun.ams:alicloud-android-hotfix:3.2.6' compile('com.aliyun.ams:alicloud-android-hotfix:3.2.6'...原创 2018-11-21 10:53:29 · 5416 阅读 · 0 评论 -
Ubantu Jenkins打包部署四:项目创建和部署
目录 配置通用参数 2. 源码管理 3. 构建环境 4.构建 5.构建后步骤 创建一个新项目 选择一个自由风格的项目,输入项目名称。然后点击OK按钮。配置相关参数jenkins全局的环境变量在系统设置--》全局属性定义全局环境变量ANDROID_HOME: ANDROID SDK目录JAVA_HOM...原创 2018-11-14 20:38:13 · 223 阅读 · 0 评论 -
Ubantu Jenkins打包部署三:打包脚本
目录安装Python1)安装python2)安装Python工具3)安装python工具库4)编写打包脚本5)测试和修改脚本 项目采用的是python环境。 安装PythonUbantu一般自带了Python。如果没有,进行安装。1)安装pythonsudo apt-get install python2)安装Python工具$ sud...原创 2018-11-14 19:34:18 · 385 阅读 · 0 评论 -
Ubantu Jenkins自动化打包部署一:Jenkins安装
第一章 安装Jenkins1.1 安装JavaJava环境,主要是JDK和JRE安装。当前比较流行的是Oracle的Java环境和OpenSDK的JAVA环境。根据自己的喜好进行选择安装。下面以OpenSDK安装为例:1)安装OpenSDK Java。$sudo apt-get install openjdk-8-jre$sudo apt-get install ope...原创 2018-11-08 20:34:06 · 492 阅读 · 0 评论 -
Ubantu下Android Studio提交代码不能退出编辑状态问题
Ubantu中,合并提交代码时,进入注释提交页面。方面修改提交注释以后,按ESC不能退出编辑状态。解决方法:1、这个是使用nano进行编辑提交的页面,退出方法为:根据提示,Ctrl+X 退出编辑状态,选择y,退出编辑状态。2、安装VIM 工具,按ESC接收退出状态。把默认编辑器换成VIM:在GIT配置中设置 core.editor: git config --glob...转载 2018-11-05 13:32:30 · 614 阅读 · 0 评论