8.2 资源的种类 从物理形式上划分,Android应用的资源可以分为以下两大类: 无法直接访问的原生资源,比如各种音频、视频等,保存在asset目录下。...注意: Ø 系统不能直接从res目录中装载资源,并进行读写操作。 Ø 除了res/raw和res/assets目录中的资源外,其它资源目录中的资源在生成apk时都会被自动编译。...Ø 对于较大的资源,我们可以将其作为外部文件单独发布,应用程序可以从手机的内存卡或SD卡中读写这些资源文件,还有一些资源在程序运行后也可以将其复制到手机内存或SD卡上再读写。...在Java代码中引用系统资源的格式为:android.R.资源的种类.资源的ID。 在XML布局文件中引用系统资源的格式:@android: 资源的种类/资源的ID。 ...这个索引必须得从1开始),s表示该参数的值是字符串,d表示该参数的值是十进制整数。
在Android中为了实现不同屏幕的适配,经常会用到在不同dimen.xml文件中对于同一dimen ID定义不同的大小,然后在代码中通过getDimension函数来获取,下面就来说说几种getDimension...getDimension()是基于当前DisplayMetrics进行转换,获取指定资源id对应的尺寸。文档里并没说这里返回的就是像素,要注意这个函数的返回值是float,像素肯定是int。...getDimensionPixelOffset()与getDimension()功能类似,不同的是将结果转换为int,并且偏移转换(offset conversion,函数命名中的offset是这个意思
本文选自《Gradle for Android 中文版》,将研究如何设置Gradle 构建配置文件中的几个属性,以缩小APK 文件。...’) 方法从Android SDK 的 tools/proguard 文件夹下的proguard-android.txt 文件中获取默认的ProGuard 设置。...缩减资源的方式有两种:自动和手动。 1. 自动缩减 最简单的方式是在你的构建中设置shrinkResources 属性。...如果设置该属性为true,则Android 构建工具将自动判定哪些资源没有被使用,并将它们排除在APK 外。使用此功能有一个要求,即必须同时启动ProGuard。...下面的代码片段展示了在某个构建类型中,如何配置自动化资源缩减: android { buildTypes { release { minifyEnabled = true
在以下示例中,字符串games出现在行首的行被排除在外: > grep -v "^games" file.txt 命令的输出可以grep通过管道过滤,只有匹配给定模式的行才会打印在终端上。...,你可能希望从搜索结果中排除特定目录。...这是一个示例,显示如何myfreax在内的所有文件中搜索字符串/etc,不包括/etc/pki目录: > grep -R --exclude-dir=pki myfreax /etc 要排除多个目录,...请将排除的目录括在大括号中,并用逗号分隔,不要有空格。...在下面的示例中,我们在当前工作目录中的所有文件中搜索字符串rumenz,不包括以.pngand.jpg目录结尾的文件: > grep -rl --exclude=*.
如果搜索字符串包含空格,则需要将其括在单引号或双引号中。...在以下示例中,字符串games出现在行首的行被排除在外: > grep -v "^games" file.txt 命令的输出可以grep通过管道过滤,只有匹配给定模式的行才会打印在终端上。...,你可能希望从搜索结果中排除特定目录。...这是一个示例,显示如何rumenz在内的所有文件中搜索字符串/etc,不包括/etc/pki目录: > grep -R --exclude-dir=pki rumenz /etc 要排除多个目录,请将排除的目录括在大括号中...在下面的示例中,我们在当前工作目录中的所有文件中搜索字符串rumenz,不包括以.pngand.jpg目录结尾的文件: > grep -rl --exclude=*.
但是当我们需要change的时候就得一个个去替换,其实在android里有很多小技巧可以让这些资源进行复用,减少体积的同时也可以使项目结构更加清晰。...在android studio中,右击drawable目录,选择new - Vector Asset,可以创建一个系统自带svg矢量图,或者通过svg、psd文件导入。...一个方法是在view中设置android:rotation属性 <ImageView ......,在drawable下新建一个资源xml,如下: android="http://schemas.android.com/apk/res/android" android...比如示例中: <?xml version="1.0" encoding="utf-8"?
因为是在这个过程中(构建时),Android Gradle构建系统会拿到所有的资源,不管是你项目自己的,还是引用的第三方的,它都一视同仁的处理,所以这个时机点可以控制哪些资源可以被打包,所以能解决第三方不使用的资源的问题...那么我们如何配置使用呢,看下面的示例,如下Gradle配置来启用Resource Shrinking: android { compileSdkVersion 23 buildToolsVersion...; } 当我们开启了shrinkResources后,打包构建的时候,Android Gradle就会自动的处理未使用的资源,不把他们打包到生成的Apk中,我们可以在我们构建输出的日志中看到处理结果,以我们当前的示例代码为例...除了shrinkResources之外,Android Gradle还为我们 提供了一个resConfigs,它属于ProductFlavor的一个方法,可以让我们配置哪些类型的资源才被打包到Apk中,...以上自动清理资源只是在打包的时候,不打包到Apk中,实际上并没有删除我们工程中的资源,如果我们在使用的时候发现有大量的无用资源被清理,那么我们自己最好还是把这些资源文件从我们的工程中删除吧,这样也好维护一些
文章目录 一、BuildType#renderscriptDebuggable 配置 二、BuildType#shrinkResources 配置 Android Plugin DSL Reference...二、BuildType#shrinkResources 配置 ---- BuildType ( build.gradle#android#buildTypes 配置 ) 文档位置 : android-gradle-dsl.../2.3/com.android.build.gradle.internal.dsl.BuildType.html BuildType#shrinkResources 配置 用于设置 是否自动优化未使用的资源...| pseudoLocalesEnabled ) 博客 ; BuildType#shrinkResources 配置原型 : boolean shrinkResources Whether shrinking..., 未使用的资源会被优化 shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt
Android为了帮助开发者把应用更方便发布给全球不同语言的人们使用,建议开发者在进行开发时不要把UI呈现相关的文本内容硬编码,而是把内容写入到strings.xml中,这样做更加灵活,也更方便翻译成不同其他语言...具体做法如Java中的formatter方法一样,请参考: http://developer.android.com/reference/java/util/Formatter.html 国际化 比如想把这句话翻译成英文...翻译成如下: I want to buy %1$s Kindle 从中可以发现Kindle这个词并没有翻译,Android中对无需翻译的词...Kindle需要用复数形式Kindles,这要如何做呢?...Android为这种情形提供了Plurals方法。
请求日志记录中排除健康检查端点(本文) 作者:依乐祝 译文地址:https://www.cnblogs.com/yilezhu/p/12253361.html 原文地址:https://andrewlock.net...我描述了如何配置Serilog的RequestLogging中间件以向Serilog的请求日志摘要中添加附加属性,例如请求主机名或选定的端点名称。...我还展示了如何使用过滤器将MVC或RazorPage特定的属性添加到摘要日志。 在本文中,我将展示如何过滤掉某个特定请求的摘要日志消息。...定制用于Serilog请求日志的日志级别 在上一篇文章中,我展示了如何在Serilog请求日志中包括所选终结点。...在下一节中,我将展示如何在不影响其他请求的情况下识别这些请求。 将自定义日志级别用于健康检查终结点请求 我们需要的是能够在写入摘要日志时识别出健康检查的请求的能力。
1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboot,应该以什么样的方式去寻找资源。...换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求 比如下面这个配置 作者:每天都懒得减肥 链接:https://www.jianshu.com/p/a9e6edd46e98...问题2:配置访问路径为/soul/后原本可以访问resources下其他文件夹的目录下的静态资源,现在不可以了。...在application.properties文件中添加: # 默认值为spring.resources.static-locations=classpath:/META-INF/resources/...由于现在建立的springboot项目,一般会将js、css等静态文件放在static下,而将页面放在templates下,所以配置上只配置了资源目录,第一个配置使用默认的*/ **,具体如下。
第3条:开启shrinkResources去除无用资源 在gradle使用shrinkResources去除无用资源,效果非常好。...从Android 4.0+开始原生支持,但是不支持包含透明度,直到Android 4.2.1+才支持显示含透明度的webp,使用的时候要特别注意。...这里不排除有极少数设备会Crash,可能和不同的so有一定的关系,请大家务必测试周全后再发布。...详情参考:Android资源混淆工具使用说明 原理介绍:安装包立减1M–微信Android资源混淆打包工具 建议开启7zip,注意白名单的配置,否则会导致有些资源找不到,官方已经发布AndResGuard...指南条例 适用范围 易用性 风险指数 备注 使用一套资源 非极高UI要求的APP 易 无 开启minifyEnabled 全部 易 无 开启shrinkResources 全部 易 无 删除无用的语言资源
起因是我们的一款App在debug包时没有问题,但是在release包时就是crash,报错如下: 可以看到问题是Didn‘t find class “android.view.x“,但是实际上我们代码中并没有这个类...,由于是release包的问题,所以第一时间想到的是混淆问题,检查了一番后发现与混淆无关,经过上网查询发现有人提到说将build.gradle中的shrinkResources设置为false即可解决,...shrinkResources 要弄明白问题,首先就要知道shrinkResources是如何工作的。...所以当我们将shrinkResources设置为false后,因为不会执行资源压缩,所以问题解决。...总结 通过上面的剖析,我们了解了资源压缩(Resource Shrinking)到底是什么,同时也知道问题所在,所以其实我们可以不将shrinkResources设置为false,而是在项目中新建一个keep.xml
关于AndroidQF AndroidQF,全称为Android快速取证(Android Quick Forensics)工具,这是一款便携式工具,可以帮助广大研究人员快速从目标Android设备中获取相关的信息安全取证数据...AndroidQF旨在给广大研究人员提供一个简单且可移植的跨平台实用程序,以快速从Android设备获取信息安全取证数据。...github.com/botherder/androidqf.git 工具构建 AndroidQF提供了针对Linux、Windows和macOS的可执行程序,如果你想自行下载源码构建,则需要在本地环境中安装并配置好...在执行过程中的某个时刻,AndroidQF会提示用户进行一些选择操作,而这些提示一定需要用户选择之后工具才会继续进行取证收集。...除此之外,我们还可以考虑让AndroidQF在一个VeraCrypt容器中运行。
构建脚本中的 " android / buildTypes " 下的 debug / release 下配置 shrinkResources true 选项 ; 资源压缩 配置示例 : android..." 文件中可以配置 保留 / 移除 的资源 ; 使用 tools:keep 属性指定要保留的资源 ; 如果保留多个资源使用逗号隔开 ; 使用 tools:discard 属性指定要移除的资源 ; 如果移除多个资源使用逗号隔开...---- 启动资源压缩后 , 压缩后的布局资源变成了如下内容 , 程序中没有引用该资源 , 在编译时 , 该资源自动替换成如下类型 ; <?...resConfigs 'en' } buildTypes { debug { // 开启资源压缩 shrinkResources...'), 'proguard-rules.pro' } release { // 开启资源压缩 shrinkResources
参数: -include {filename} 从给定的文件中读取配置参数 -basedirectory {directoryname} 指定基础目录为以后相对的档案名称 -injars...-renamesourcefileattribute {string} 设置源文件中给定的字符串常量 开启shrinkResources去除无用资源 在gradle使用shrinkResources...android { buildTypes { release { shrinkResources true } } } 清理无用资源...在build.gradle 里面配置shrinkResources true,在打包的时候会自动清除掉无用的资源,但经过实验发现打出的包并不会,而是会把部分无用资源用更小的东西代替掉。...从Android 4.0+开始原生支持,但是不支持包含透明度,直到Android 4.2.1+才支持显示含透明度的webp,使用的时候要特别注意。
我们还可以通过配置 shrinkResources 来移除未使用的资源。不过,使用 shrinkResources 必须开启代码混淆。...在处理过程中,ProGuard 会移除未被使用的代码,但是不会移除资源。而开启 shrinkResources 后,Gradle就会移除资源了。...下面为开启 shrinkResources 后APK体积的变化: ? 又缩小了一点点。 图片压缩 对于资源文件的优化,其实占大头的还是图片。...例如在Android 5.0+上我们可以使用 android:tint 和 android:tintMode,在低版本中可以使用 ColorFilter。...arm64-v8a', 'x86', 'x86_64' universalApk true } } } 当然,如果是特别大的原生库,我们还可以通过网络,从云端获取
概述 大多数项目在实际实行的时候的资源是有限的,这就会涉及到一个项目管理中的常见问题——资源分配。本文结合一个简单的案例来讨论一下这个问题。 问题 ?...答案 1.目标与资源 分析一下上面的问题。 1) 目标 完成拖地,擦玻璃和切菜。 2)资源 资源可以分为两类:人力资源(2人)和物力资源(墩布一把、抹布一个、菜刀一把)。...回到上面的问题,这个问题就是在项目管理中的资源分配问题:如何合理的分配资源? 2.分配方案 1)方案1 ? 2)方案2 ? 3)方案3 ? 我们来比较一下这三种种方案。...因此,在实际的工作中需要结合实际情况,从而找到最好的资源分配方案。
如何减少打包后的APK文件大小,也就是所谓的APK瘦身,这涉及到很多技术手段,最常用的主要有四块:去除冗余功能、精简无用资源、减少图片大小、过滤无用的so文件,分别介绍如下: 一、去除冗余功能 每当开发者创建新的...然后看supportsRtl,该属性名称当中的Rtl为“Right-to-Left”(从右到左)的缩写,像中东的阿拉伯语、希伯来文等从右到左书写,supportsRtl属性为true时表示支持这种从右向左的文字系统.../ic_launcher_round" android:supportsRtl="false" android:theme="@style/AppTheme"> 二、精简无用资源...除了代码之外,应用项目还包括各种资源文件,若想移除无用的资源文件(包括xml布局和图片),就要引入新属性shrinkResources,并将该属性值设为true,这样Android Studio在打包APK...shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'
资源下载 下面是《Android Studio开发实战 从零基础到App上线》一书用到的工具和代码资源: 1、本书使用的Android Studio版本为3.0.1,Kotlin版本为1.2.0...,最新的Android Studio安装包可前往Android官网页面下载。...勘误记录 下面对书中的笔误之处进行更正说明: 1、第6页的“1.2.3 创建Kotlin工程” 第二段里面的“不过因为如通知的新特性从API16开始才支持”改为“不过因为通知推送的新特性从API16...19、第286页的“9.5.2 开始热身:震动器Vibrator” 不包括代码的第四段中“原来获取通知管理器的两行代码”,这里的“原来”改为“这样”。
领取专属 10元无门槛券
手把手带您无忧上云