Android进阶
文章平均质量分 77
Android进阶
有头发的猿
某著名程序员,曾参与过抖音,腾讯视频等app的使用。
目前职位:Android系统工程师
展开
-
Android进阶-bugs 解决大集合
1、20191219当用ndk编译一个共享库时,出现#include <linux/hidraw.h> not found将android工程build target 提高到Android 5.0以上即可解决。原创 2019-12-19 14:47:04 · 623 阅读 · 0 评论 -
Android进阶-File类的学习-简单文件管理器
效果图: 首先manifest中加入可以读取SD卡的权限,如下 <!-- 判断是否存在文件系统SD卡 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 允许当前应用程序读取SD卡文件 --> <uses-permission android:原创 2016-11-05 17:06:22 · 2490 阅读 · 1 评论 -
Android进阶-自定义库和第三方库混合编程脚本编写
一、AndroidStudio 混合编程流程1.1 设置支持的arm的类型在build.gradle中设置arm的类型,如果不设置也就是忽略此步骤,默认支持所有的类型,运行项目后,系统根据自身的arm类型,自动选择加载......android { defaultConfig { .... ndk { // Specifies the ABI configurations of your native // libraries原创 2021-03-09 10:30:35 · 389 阅读 · 0 评论 -
Android进阶-AndroidStudio兼容自定义和第三方库编译
1.在CMakeList.txt中设置自定义库的加载路径,不要和第三方库的路径一致,否则每次编译都会删掉第三方库CMakeList.txt:......set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/jniLibs/${ANDROID_ABI})......2.在模块的build.gradle中设置第三方库的加载路径:android {...... defaultConfig { ......原创 2020-07-22 17:29:22 · 1430 阅读 · 0 评论 -
Android进阶-TextView最大宽度可以显示文字的数量
一、情景再现当TextView的高度宽度为固定大小时,随着其Text的动态增加,导致TextView的显示范围以无法满足完全显示所有Text时,这个时候TextView会直接不显示后面动态增加的文字,这个时候我们很可能其实是想显示后面动态增加的文字,那么这个时候我们就需要就算该TextView可以显示的文字范围,然后动态的显示我们需要显示的某一范围的文字。例如,有一个动态文字:端午节可以去你家吃粽子吗?我可以帮你跑8公里我们没有处理前,可能是这样动态显示:可以看到当我们增加了第二句话之后,Text原创 2020-06-22 17:33:52 · 4467 阅读 · 2 评论 -
Android进阶-兼容高版本API 运行在低版本设备上
当一般情况我们需要用高版本API 函数 运行在 低版本设备上会使用如下判断f(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {}但是想我们的抽象类我们大多数都是全局定义,这样我们就无法通过上面的判断去定义了,举一个简单常见的例子:做过低功耗蓝牙扫描的人就知道ScanCallback 抽象类,一般我们都是通过如下...原创 2020-04-16 16:59:31 · 2500 阅读 · 0 评论 -
AndroidStudio运行出现Class not found using the boot class loader; no stack available
今晚我在运行一个我认为没有任何问题的测试项目时,一直出现找不到MainActivity的错误,在机顶盒上出现的错误大致如下:--------- beginning of crash2019-08-14 16:58:42.065 31262-31262/? E/AndroidRuntime: FATAL EXCEPTION: main Process: /com.***.***., PI...原创 2019-10-24 20:38:47 · 3491 阅读 · 0 评论 -
Android进阶-SELinux
前一篇文章已经介绍了SELinux相关知识, https://blog.csdn.net/qq_33750826/article/details/80743035 基于 Android 4.3(宽容模式)和 Android 4.4(部分强制模式)的 Android 5.0 版本,开始全面强制执行 SELinux。一、政策格式政策规则采用以下形式: allow domain...原创 2018-06-28 11:44:28 · 4734 阅读 · 0 评论 -
Android进阶-apk系统签名
一、来源 有时候我们开发一个apk需要系统权限,于是我们便会在apk的AndroidManifest.xml中添加如下属性:android:sharedUserId="android.uid.system"这个时候我们去安装apk,会提示: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE这个时候就是需要给apk一个系统签名。...原创 2018-06-28 20:04:20 · 14039 阅读 · 0 评论 -
Android进阶-Command Line Tools-2
四、dumpsys dumpsys是一款在Android设备上运行并提供有关系统服务信息的工具。您可以从adb命令行调用dumpsys以获取连接设备上运行的所有系统服务的诊断输出。此输出通常比您想要的更冗长,因此请使用下面介绍的命令行选项来获取仅用于您感兴趣的系统服务的输出。本页还介绍了如何使用dumpsys来完成常见任务,例如检查输入, RAM,电池或网络诊断常用的dumpsys的...原创 2018-07-07 17:02:20 · 2620 阅读 · 0 评论 -
Android进阶-HAL层介绍
本文摘自 罗升阳的《Anroid系统源代码情景分析》,更新至Android7.0分析一、概念 一、Android系统为硬件抽象层中的模块接口定义了编写规范,我们必须按照这个规范来编写自己的硬件模块接口。 二、Android系统的硬件抽象层以模块的形式来管理各个硬件访问接口。每一个硬件模块都对应有一个动态链接库文件,这些动态链接库文件的命名需要符合一定的规范。同时,...原创 2018-09-17 17:08:16 · 2955 阅读 · 0 评论 -
Android进阶-音频波形绘制原理
绘图参考:https://blog.csdn.net/chenzhuo1100/article/details/50673139先上图,引发大家的积极性。Demo GitHub下载一、波形绘制1)、 音频参数首先我们绘制音频波形,当然必须得有音频数据,而音频数据要想体现它的价值,就离不开采样率,采样位宽,采样通道数 ,采样点这几个参数的渲染,采样点:采样点的值范围由采样位宽决定...原创 2019-01-25 18:16:39 · 5755 阅读 · 8 评论 -
Android进阶-解决.9图-ShowBadPatches
一、概念网上讲解怎么制作.9图的文章好的数不胜数,这里我就不再做介绍。这里我们通过AndroidStudio拿到一张.9图可以看到好像非常完美,也可以看到可以成功运行,基本看不到什么问题但是当你勾选 Show bad patches会发现很多红色矩形框,这里便是AndroidStudio中.9工具检测出来的错误,但是是不影响运行。二、产生的原因在介绍原因之前,这里需要提到的是制...原创 2019-04-05 18:43:02 · 2430 阅读 · 2 评论 -
Android进阶-原生c、c++代码bug定位的方法
一、崩溃转储参考android官网:https://developer.android.google.cn/ndk/guides/ndk-stack?hl=zh-cnhttps://source.android.google.cn/devices/tech/debughttps://source.android.google.cn/devices/tech/debug/native-cra...原创 2019-08-08 16:35:19 · 1309 阅读 · 0 评论 -
Android进阶-Command Line Tools-1
一、概览Android SDK由多个软件包组成,这些包是应用程序开发所必需的。这个页面列出了最重要的命令行工具,这些工具是由它们配送的包组织。你可以安装和更新每一个软件包,使用Android Studio的SDK Manager 或者 sdkmanager 命令行工具。所有的包都被下载到您的Android SDK目录中,您可以将其定位如下:在Android Studio, click...原创 2018-07-03 16:05:36 · 10843 阅读 · 1 评论 -
Android开发之input子系统二之创建自己的input
参考:http://blog.csdn.net/myarrow/article/details/12105973一、概略根据章节一的内容我们大致了解了android系统的input子系统的一些信息,但是有时候系统自动提供的input事件却并不能满足我们的实际需求,android系统针对这个也为我们提供了uinput。二、APIuinput_user_dev 基于Android...原创 2018-03-05 18:00:35 · 1254 阅读 · 0 评论 -
Android进阶-RecyclerView自定义分割线
效果图: import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.drawabl原创 2016-11-14 16:52:37 · 596 阅读 · 0 评论 -
Android进阶-Bluetooth API 基本使用-蓝牙小程序
首先看下效果图: Demo主要功能有:打开蓝牙,关闭蓝牙,搜索设备,停止搜索,连接设备,断开当前连接设备;Demo下载Bluetooth: Android平台支持蓝牙网络堆栈,和允许一个设备与另一个设备无线的交换数据。首先我将官方的API进行了一系列封装:BluetoothUtil:package com.example.bledemo;import java.io.IOException;i原创 2016-12-29 14:38:40 · 9393 阅读 · 7 评论 -
Android进阶-百度地图申请key规范和230,200,no config chosen分析解决办法。
一、申请规范:来到申请key官网:点击进入申请key 可以看到申请密钥要填写四个值, 规范一、应用名称:必须和你准备使用百度地图SDK的项目名称是一模一样,允许复制粘贴进去规范二、:发布版SHA1值和开发版SH1值:当然我不关心你的值,但是你拿到这两个SHA1值后,绝对不能粘贴复制到申请key的网页中,必须手动一个一个敲进去,绝对不能复制。规范三、:包名:包名的填写也必须和你创建项目时填写的包名原创 2017-01-07 13:40:39 · 6148 阅读 · 1 评论 -
Android进阶-jni串口
前言我第一次听说串口完全是懵逼状态,脑子没一点概念,于是我就到处百度,但是发现网上的例子都是一些乱七八糟的代码,有代码也基本都不会解释,现在做这个串口开发也有段时间了,现在根据我的理解写了这篇博客。串口是什么?串口就是一个可以将我们的android设备和一些驱动设备数据交互的通道,通过串口我们从android设备端发送数据到驱动设备,驱动设备会随之返回一串数据给我们,通常会用usb数据线作为andr原创 2016-12-14 13:45:23 · 5701 阅读 · 20 评论 -
Android进阶-NDK学习完整版
什么是JNI? JNI java本地开发接口(java native interface) JNI 是一个协议 这个协议用来沟通java代码和外部的本地代码(c/c++). 通过这个协议,java代码就可以调用外部的c/c++代码 外部的c/c++代码也可以调用java代码为什么用JNI?java 一次编译 到处执行,不能写驱动,c是底层语言可以写驱动,要想在java中调用C语言的代码就原创 2016-11-28 17:18:59 · 9303 阅读 · 8 评论 -
Android进阶-增量更新
一、使用场景 apk升级,节省服务器和用户的流量二、原理自从 Android 4.1 开始, Google Play 引入了应用程序的增量更新功能,App使用该升级方式,可节省约2/3的流量。现在国内主流的应用市场也都支持应用的增量更新了,最常见的应用宝省流量更新。增量更新的原理,就是将手机上已安装apk与服务器端最新apk进行二进制对比,得到差分包(即两个版本的差异文件),用户更新程序时,只原创 2017-07-20 18:56:22 · 11276 阅读 · 3 评论 -
Android进阶-第三方框架使用汇总
image loading 框架: 1.1 Glide1.1Glide:一、Glide-Getting StartedGlide:Glide就像Picasso,能从许多资源上加载和显示图片,也照顾了缓存和做图片操作的时候保持一个低的内存影响,它已经被官方谷歌应用程序(如Google I / O的应用程序2015)和Picasso一样受欢迎,在本系列中,我们将探索Glide在Picas原创 2016-11-22 17:49:51 · 16626 阅读 · 9 评论 -
Android进阶-那些年ant自定义构建dex分包所遇到的坑
前言 这片文章不讲解怎么去使用ant自定义构建分包,网上大有文章所在,但是我发现其中聊坑的文章特别少,因此根据整个dex分包的过程中所遇到的坑以及解决办法跟大家分享。以下环境均是eclipse聊坑一、UNEXPECTED TOP-LEVEL EXCEPTION此时我的JDK版本是1.8,ant版本是apache-ant-1.10.1-bin,贴出在build.xml中的部分编译代码:<java原创 2017-07-28 10:36:42 · 2029 阅读 · 2 评论 -
Errors running builder 'Android Package Builder' on project Unsupported major.minor version 52.0
错误发生环境:编译运行环境为eclipse,JDK版本为jdk1.7错误如下:一、错误分析 version 52.0指的是jdk1.8的版本,我的项目某些地方可能指定了需要jdk1.8才能运行,但是并不意味着我的项目里面使用了jdk1.8的api,上面也说了我的JDK版本为1.7,既然某些地方指定了需要jdk1.8才能,运行项目就会出现不支持JDK1.8,我电脑中也没有关于JDK1.8的东西,原创 2017-07-29 10:07:34 · 8340 阅读 · 7 评论 -
Android进阶-反编译、apk重新打包、apk混淆、apk对齐与不对齐、jar混淆、proguard
前言:学习必须脚踏实地,所以大家真心想学,我相信你花点时间在认真按照博客编写过程一步一步去阅读,你将会有不一般的收获,不建议大跳跃性的阅读。1.反编译详细说明地址一、概括:破解别人的app,拿到别人app的源代码。二、应用场景:自己做不出的功能,全网搜索都没结果的情况下,但是看到别人的app中有你需要的功能 ,就会去考虑反编译,但是一般是不会去做这样的事的,首先反编译也不是那么容易,其次可能有些人原创 2017-01-06 17:29:03 · 5758 阅读 · 10 评论 -
Android进阶-混淆内部接口
有一天我想混淆一个SDK的某个类的内部接口和所属的该类,于是我在混淆文件添加如下:-keep class com.kw.yz24g.remote22.SensorCtrlTasker{ *; }-keep public interfacecom.kw.yz24g.remote22.SensorCtrlTasker$SensorCtrlListener{ *; }发现怎么都没用,后面查询资料发现-原创 2018-01-02 15:31:28 · 6062 阅读 · 0 评论 -
Android开发之input子系统一
一、了解 Android系统主机默认携带input子系统,并且开机就会产生默认的mouse和keyboard事件,这样使得用户开机就可以触屏点击和使用按键。可通过adb shell getevent 命令看到用户input事件产生的信息。Android系统主机也支持链接遥控设备(蓝牙遥控器,dongle遥控器(2.4G),鼠标,键盘等)并根据遥控设备向系统注册的信息,系统生成对应的input事件原创 2018-02-07 18:08:02 · 3511 阅读 · 1 评论 -
Android进阶-ListView缓存分页加载
效果图: 首先将布局写好activity_main:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" andr原创 2016-11-07 10:23:33 · 1146 阅读 · 0 评论