Android
文章平均质量分 52
Android
Star丶Xing
Star
展开
-
Android 7.0 矢量图模糊
问题在 Android 7.0 设备上,ImageView 使用了矢量图片(VectorDrawable),图片模糊。原因硬件加速,造成模糊。解决在 ImageView 设置ImageResource 之前,添加如下代码 setLayerType(View.LAYER_TYPE_SOFTWARE, null);...原创 2020-11-16 18:52:40 · 547 阅读 · 0 评论 -
加速 Android 依赖下载
问题Android 依赖库默认采用国外镜像,通过切换为国内镜像加速下载。解决修改项目根目录 build.gradle ,修改两处的 repositories,改为阿里云镜像源。buildscript { repositories { google() jcenter() //... 其他仓库 }}allprojects { repositories { google() jcent原创 2020-08-05 11:40:58 · 450 阅读 · 0 评论 -
Android 的 LocalScoket 与 Socket 区别
Socket 最初用于 TCP/IP 网络通信。在 TCP/IP 协议栈中,由于操作系统隐藏了 TCP/IP 协议,应用程序如果要调用协议,就需要操作系统提供的 Socket 接口。后来在 Socket 基础上发展出一种 IPC 机制 Unix domain socket,用于同一台主机之间的跨进程通信。虽然 Socket 也可以实现同一台主机的跨进程通信,但是 Unix domain soc...原创 2019-12-05 14:58:49 · 539 阅读 · 0 评论 -
Android 代码扫描工具
静态代码扫描360 火线官网:http://magic.360.cn/zh/index.html收费:免费详情:检测代码潜在的安全问题,性能,以及崩溃问题。规则:http://magic.360.cn/zh/document.html...原创 2019-03-05 09:17:52 · 989 阅读 · 0 评论 -
Android 安全 —— allowbackup 引起的漏洞
概述在 API 8 以上,Android 提供了应用数据备份和恢复的功能。在 AndroidManifest.xml 的 allowbackup 可以声明App是否允许被备份。当 allowBackup 为 true 时,App 可以被备份,可以通过 adb backup 和 adb restore 来备份和恢复应用。 <application android:all...原创 2019-03-04 10:38:50 · 967 阅读 · 0 评论 -
Android 安全 —— 本地拒绝服务漏洞
概述Activity / Service / BroadcastReceiver / ContentProvider 的 export 设置为 true 时,攻击者可以向这些组件发送畸形 Intent 。<activity android:name=".demo.DemoActivity" android:export="true" ....危害攻击者可以轻易地向A...原创 2019-03-04 10:57:42 · 1061 阅读 · 0 评论 -
Android 自定义权限
1 概述Activiyt / Service 等需要被共享时,需要设置 export = "true"。如果要控制这些共享组建的访问权限,则需要定义暴露出的组件的访问权限,即需要自定义权限。2 自定义权限的流程假设有如下场景,应用 A 有一个 Service,需要暴露给应用 B 访问,那么首先需要在A中声明自定义权限,然后在 Service 上添加该权限,其次 B 中声明要使用该自定义权限。...原创 2019-03-04 11:38:17 · 1542 阅读 · 0 评论 -
Binder 讣告应用于进程守护
Binder 应用于C/S通信中,有时候Server可能需要知道Client进程是否存在,当Client挂掉后,Server可以及时清理资源。利用这种机制,同样可以实现简单的程序守护,当Client崩溃后,Server帮助重启Client程序。守护程序守护程序开放一个Service,提供给被守护程序调用AIDLpackage com.example.guardapp;import ...原创 2019-06-14 21:12:51 · 349 阅读 · 0 评论 -
减少Android开发对C盘的占用
问题Windows 系统中,Android 开发环境默认会在C盘存放十几个G的文件,造成系统盘空间紧张。这里提供几个方法,将这些文件迁移出C盘。SDKAndroid SDK 默认在 C:\Users\<用户名>\AppData\Local迁移步骤:关闭Android Studio,以及一切Android开发工具拷贝SDK到其他位置,如: E:\DevEnv\androi...原创 2019-09-04 14:46:54 · 1302 阅读 · 0 评论 -
解决Android调试不显示 “允许USB调试” 认证窗口
问题真机调试,连接USB后,通常会显示如下认证。未认证的设备显示如下有些机器在某些情况下,可能没有弹出认证窗口,可以通过下面的方式尝试解决。解决在开发者选项中撤销USB调试授权执行 adb reconnect重新插拔USB调试线重新你的手机尝试关闭,开启一次USB调试尝试关闭开发者模式,重新打开开发者模式...原创 2019-09-04 16:39:37 · 24918 阅读 · 1 评论 -
更新 Android 系统应用
问题在定制的系统中,需要单独远程更新内置在系统中的系统级App。这与更新普通用户程序有差别。解决更新有两种方式:通过OTA升级更新系统这种方式最直接有效,可以直接更新掉位于 /system/app 的系统应用通过调用Apk安装的系统API,必须保证新的程序版本高于被替换的版本。新的版本会被安装在 /data/data/中,旧的版本会继续存在于/system/app中。...原创 2018-12-21 10:43:13 · 1388 阅读 · 0 评论 -
Android 库依赖冲突
问题描述我们项目找经常经常看到库依赖冲突,例如下面的编译日志:FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:preDebugBuild'.> Android dependency 'com.android.support:recyclerview-...原创 2018-09-27 10:44:55 · 1278 阅读 · 0 评论 -
Android使用FFmpeg 解码H264并播放(一)
问题描述在开发中使用某摄像头的SDK,只能获取到一帧帧的 H264 视频数据,不知道视频流地址,需要自己解码出图像并播放。问题解决编译FFmpeg此处省略,这里有 编译好的库,上传到Github了。开发环境配置1、 配置 AndroidStudio 的 NDK 路径。 2、 配置 app 的 build.gradle ,添加 CMake 参数android { defaultConfig原创 2017-06-12 16:18:53 · 9571 阅读 · 2 评论 -
编译包含隐藏API的Android SDK(被@hide隐藏)
Android 官方对开发和隐藏了很多 API,在一般开发中,我们很少需要使用它们,但并不是说这些API很鸡肋,相反的,利用这些API往往能够实现一些神奇的效果....原创 2017-11-29 11:21:01 · 4215 阅读 · 1 评论 -
为Apk打上系统签名
为何需要系统签名在为特定的定制Android系统开发系统应用时,调用到某些系统功能,可能提示权限不够,需要给应用打上系统签名。提取签名证书Android需系统签名证书在系统源码里,一般位于build/target/product/security 下(该目录执行AOSP源码编译后才会出现),我们需要 platform.pk8 和 platform.x509.pem 两个文件。获原创 2017-12-02 16:11:23 · 3035 阅读 · 0 评论 -
获取Android System 写入权限
获取Android System 写入权限注: 以下前提是系统已经root过。/system 是Android系统目录,存放Android系统应用和lib,有时候我们需要向该目录中写入文件,例如,将自己开发的apk内置到系统中,作为系统apk启动,但该目录默认是只有 read 权限,没有 write 权限,执行wirte后会出现 Read-only file system 的错误提示。原创 2018-01-13 14:48:09 · 14667 阅读 · 7 评论 -
adb将Apk内置到系统中(system/priv-app)
有时候我们在Android 系统内置自己的应用,在测试时,Android Studio 默认的安装方式是将我们开发的应用作为普通应用安装到系统中的。本文提供一种方式,在开发过程中,将apk内置到系统中,而不需要系统源代码。 adb 将apk内置到系统的方法很多人已经提到过了,但是大多都过时了,或者叙述不详细。下面的方式在我在 Android 7.1.1 测试通过内置Apk的特权原创 2017-12-02 17:12:00 · 23460 阅读 · 10 评论 -
获取当前使用Android的用户的Id
我们知道,Android 基于Linux,是多用户操作系统,我们使用 adb 工具测试时,经常使用 root 身份。那么,我们日常开机使用时,登录的用户id是什么呢?可以通过如下方式获取到当前正在运行的用户。执行 adb shell pm list users 可以看到Users: UserInfo{0:name:13} running其中 0 表示 user Id, 这条原创 2018-01-13 16:13:14 · 11022 阅读 · 1 评论 -
adb 命令记录
adb 命令PC与安卓间传输文件# 发送文件到手机adb push [PC源文件路径] [目标路径]# 安装apk到手机adb install [apk的pc路径]# 卸载apkadb uninstall [package-name]以root身份运行adbadb root进入ADB shelladb shell Remount 解原创 2017-10-13 10:09:54 · 480 阅读 · 0 评论 -
Android Studio 构建变体(Build Variant)
每一个 Build Variant 代表一个应用的不同版本,例如一个应用可以有免费版,和收费版,或者针对不同的设备的版本。构建变体由一种 Build Type 和一种 Product Flavor 组成。 例如,有以下Build Type 和 Product Flavor: Build Type :release , debug Product Flavor : free...原创 2018-09-15 13:53:44 · 7423 阅读 · 0 评论 -
Ubuntu 16.04 编译 Android 5.1
目录环境准备安装JDK-7安装编译依赖执行编译编译问题unsupported reloc 43环境准备安装JDK-7$ sudo add-apt-repository ppa:openjdk-r/ppa$ sudo apt-get update $ sudo apt-get install openjdk-7-jdk 安装编译依赖$ sudo apt-get install g...原创 2018-09-20 14:13:27 · 1309 阅读 · 0 评论 -
让apk只包含指定的so
问题描述Android 使用多个包含 .so 的第三方库,应用崩溃。日志显示找不到 xxx.so。问题分析现在很多第三方库都是通过aar方式引用的,里面也包含了 .so 库。这些so会被编译进apk的lib文件夹下。apk解压后可能类似下面:手机在使用这些so时,会先根据自身的CPU加载自己优先支持的架构的库,如果发现架构对应的文件夹存在,则会将该文件夹下的 so 推入 apk 安装目录的lib文件原创 2017-06-12 15:41:29 · 1086 阅读 · 0 评论