Android打包
文章平均质量分 56
闫文敬
Android开发工程师、安全工程师
展开
-
gradle打印task及产物
【代码】gradle打印task及产物。原创 2024-06-15 14:07:40 · 153 阅读 · 0 评论 -
Android混淆 ProGuard进阶
Android混淆是一种安全措施,其作用包括:防止反编译:混淆会对代码进行重命名和重组,使得反编译后的代码难以理解和复原,从而增加攻击者分析和理解代码的难度。隐藏敏感信息:混淆可以将一些敏感信息(如API密钥、数据库密码等)进行替换、加密或隐藏,以防止攻击者获取和利用这些信息。减小应用大小:混淆可以移除未使用的代码和资源,从而减小应用的大小,提高运行效率和加载速度。优化代码:混淆可以对代码进行优化,去除冗余代码、内联方法、合并变量等,从而提高应用的性能和响应速度。原创 2023-09-19 16:43:20 · 189 阅读 · 0 评论 -
Android Gradle4.2之后禁用资源混淆压缩
在gradle4.2开始我们可以在gradle.properties文件内添加 android.enableResourceOptimizations=false 来禁止资源混淆。使用Gradle4.2编译项目发现,res下的layout,drawable 等目录都被移除,所有 的资源都放到了res下 且资源名称被混淆为随机字符。在gradle4.2之前可以在gradle.properties 添加 android.enableR8=false 来禁止使用r8。在gradle3.4.0后r8 默认开启,原创 2023-06-09 17:54:15 · 784 阅读 · 0 评论 -
Android打包合并多个清单文件
合并优先级合并工具会根据每个清单文件的优先级按顺序合并,将所有清单文件组合到一个文件中。例如,如果您有三个清单文件,则会先将优先级最低的清单合并到优先级第二高的清单中,然后再将合并后的清单合并到优先级最高的清单中,如图 1 所示。 https://developer.android.google.cn/studio/build/manifest-merge.html合并规则标记合并规则标记是一个 XML 属性,可用于指定您对如何解决合并冲突或移除不需要的元素和属性的偏好。您可以对整个元素应用标记,也原创 2022-05-13 13:44:21 · 2686 阅读 · 0 评论 -
android studio Gradle7.0发布内容到Maven仓库
Gradle6.x及以下版本的使用apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { repository(url: url//私有maven库地址) { authentication(userName//账号, password// 密码) } pom.version = version转载 2022-04-18 17:17:57 · 1282 阅读 · 0 评论 -
Android cpu架构类型升级方案调研
1.背景说明当前APP上个版本APK安装包大小58.3M,近期即将上线原生直播功能,APK大小将会增加至109M左右,会影响用户的升级意愿和安装使用情况,故对APK架构支持进行调研,通过数据对比得出可行性方案结论。2.CPU架构相关知识Android 支持的cpu架构类型:armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips、mips64,其中分为三大家族:arm、x86、mips,目前常见的麒麟cpu、高通cpu、联发科cpu都是arm架构,常见于移动设备原创 2022-03-27 09:40:24 · 578 阅读 · 0 评论 -
Gradle插件:ReplaceMethod,对调用的方法进行替换
ReplaceMethod(对调用的方法进行替换的工具)ReplaceMethod: 在代码编译阶段,根据收集的配置信息,利用ASM对字节码进行替换,以达到对调用的方法进行替换的工具 (您不需要学习怎么写gradle插件,不需要学习ASM非常复杂的语法)为什么要做这个工具治理项目中的线程问题背景:由于我做的项目历史非常的悠久并且非常的庞大复杂,项目中的线程没有一个统一的管理方式并且野线程(没有名字的线程)到处飞。于是想着使用ASM在编译过程中对所有new Thread的地方进行替换到某个方法原创 2022-03-09 10:07:08 · 619 阅读 · 0 评论 -
【调研】Android应用versionName和versionVode版本名和版本号之间的关系以及自动化版本号脚本
1.调研目的在项目开发过程中,Android中存在两个版本名称:versionName和versionVode;业务上我们常用的版本名(号)实际上是versionName,忽略了versionCode的存在,而在Android设备中versionCode是不可降低的,而且每次发版都要进行叠加升级。为了便于开发,在开发过程中减少versionCode对开发者的影响,我想设计一个方法,通过versionName转换为versionCode,为此想要看看其他类APP是如何实现的2.调研方式获取手机中已安装原创 2021-03-01 15:49:09 · 864 阅读 · 0 评论 -
Android Studio基于360加固的一键加固gradle脚本配置
1.新建plug_360_jiagu.gradle文件def userName360 = ''def password360 = ''def package360Path = ''def mulpkgChannel360Path = ''def keystoreFilepath = ''def keystorePSW = ''def keystoreAlias = ''def keystoreAliasPSW = ''def keyfile = file('temp')//签名相关k原创 2020-09-10 17:49:01 · 1053 阅读 · 0 评论 -
Android 使用andResGuard资源混淆配置使减小apk体积
1.集成方式1.在项目build.gradle中添加构建工具依赖地址:dependencies { //xxx classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.16'}2.自定义 and_res_guard.gradle 脚本,然后再项目中添加引用 apply from: 'and_res_guard.gradleapply plugin: 'AndResGuard'andResGuard { //白名单机制只作用于原创 2020-07-31 09:13:45 · 2765 阅读 · 0 评论 -
Android ndk abiFilters 无效 解决方案
1.问题产生原因项目引用远程gradle配置,该配置已经默认数种cpu架构类型,但是我在当前项目由于某种原因只想要其中一种架构,怎么处理?原远程配置 ndk { abiFilters 'armeabi-v7a', 'armeabi', 'x86' }2.在当前项目内也采用该方式,但是打出的apk中仍然是上面的三种cpu架构类型当前项目配置 ndk { abiFilters 'armeabi-v7a' }3.查明原因点击进入源码,发现该方法是原创 2020-06-04 11:59:17 · 5787 阅读 · 4 评论 -
Android混淆 proguard-rules.pro 常用配置模板
#下面代码中的路径配置,你要修改成与你相对应的路径#引入依赖包rt.jar(jdk路径)(注意:如在makeJar的时候提示指定了两次,可以将其注释掉)#-libraryjars 'C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar'#引入依赖包android.jar(android SDK路径)(注意:如在makeJar的时候提示指定了两...原创 2018-04-20 11:34:24 · 4527 阅读 · 0 评论 -
Android Studio 混淆打包apk使用 自定义字符
通过修改开源项目proguard下载到本地,修改类SimpleNameFactory的charAt方法,再重打包proguard.jar,重命名并替换为C:\Users\Administrator.gradle\caches\modules-2\files-2.1\net.sf.proguard\proguard-base\xxx目录下的proguard-base-xxx.jar(不同设备目录可...原创 2018-11-29 17:21:45 · 2433 阅读 · 1 评论 -
Android Studio 通过gradle配置 配置构建变体 组合多个产品风味 打包生成不同包名不同资源apk
android { signingConfigs { config { keyAlias 'xxx' keyPassword 'xxx' storeFile file('xxx') storePassword 'xxx' } } useLibra...原创 2019-01-30 09:07:23 · 2571 阅读 · 0 评论 -
Android 多渠道打包
1.在AndroidManifest.xml的application节点下添加如下代码:<meta-data android:name="UMENG_CHANNEL" android:value="${CHANNEL_NAME}" /> 2.在app的builder.gradle中添加如下代码android { // 其他配置代码 productFla原创 2016-08-05 10:48:08 · 2186 阅读 · 0 评论