Android_多渠道打包_混淆
Android_多渠道打包_混淆
- 1、多渠道打包配置
- 2、混淆
1、多渠道打包配置
android studio version 4.2.2
sdk version 30
作用:
1、统计用户安装APP来源
2、批量修改生成的apk文件名、包名等
签名:
1、生成jks(java key store):Build->Generate Signed Bundle
2、打包对应apk版本:AS编译器左侧,Build Variants中选择
3、查看MD5和SHA1:windows环境:cmd进入jdk的bin目录,执行keytool.exe -list -keystore D:\test.jks
具体配置:app目录下build.gradle文件
// 统一维度flavorDimensions "versionCode"// 1、配置多渠道productFlavors {xiaomi {applicationId = "com.yong.xiaomi"//不同渠道配置不同参数buildConfigField "int", "TEST_VALUE", "1"buildConfigField "String", "TEST_NAME", "\"xiaomi\""}huawei {applicationId = "com.yong.huawei"//不同渠道配置不同参数buildConfigField "int", "TEST_VALUE", "2"buildConfigField "String", "TEST_NAME", "\"huawei\""}//遍历productFlavors多渠道,设置渠道号(xiaomi 、huawei)productFlavors.all {flavor -> flavor.manifestPlaceholders.put("CHANNEL", name)}}// 2、配置输出路径,项目名+编译类型+版本号+当前时间applicationVariants.all { variant ->def name = ((project.name != "app") ? project.name : rootProject.name.replace(" ", "")) +"_" + variant.flavorName +"_" + variant.buildType.name +"_" + variant.versionName +"_" + new Date().format('yyyyMMddhhmm') + ".apk"//相当于路径 app/apk/def path = "../../../../../apk/"variant.outputs.each { output ->def outputFile = output.outputFileif (outputFile != null && outputFile.name.endsWith('.apk')) {//指定路径输出output.outputFileName = new File(path, name)}}// 在打包完成后还可以做一些别的操作,可以复制到指定目录,或者移动文件到指定目录/*variant.assemble.doLast {//File out = new File("${project.rootDir}/apk")variant.outputs.forEach { file ->//1、复制apk到指定文件夹//copy {// from file.outputFile// into out//}//2、把文件移动到指定文件夹ant.move file: file.outputFile,todir: "${project.rootDir}/apk"}}*/}// 3、多渠道签名的配置signingConfigs {xiaomi {// keystore需要自己生成storeFile file("../keystore/xiaomi.jks")storePassword 'xiaomi'keyAlias 'xiaomi'keyPassword 'xiaomi'v1SigningEnabled true //针对Jar包v2SigningEnabled true //针对Apk包}huawei {storeFile file("../keystore/huawei.jks")storePassword 'huawei'keyAlias 'huawei'keyPassword 'huawei'v1SigningEnabled truev2SigningEnabled true}}// 4、编译类型buildTypes {debug {productFlavors.xiaomi.signingConfig signingConfigs.xiaomiproductFlavors.huawei.signingConfig signingConfigs.huawei}release {minifyEnabled true // 开启混淆zipAlignEnabled true // 优化apk文件shrinkResources true // 去除无用资源proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'// 指定混淆规则文件productFlavors.xiaomi.signingConfig signingConfigs.xiaomiproductFlavors.huawei.signingConfig signingConfigs.huawei}}// 5、不同渠道不同资源文件配置sourceSets {xiaomi.res.srcDirs 'src/main/res-xiaomi'huawei.res.srcDirs 'src/main/res-huawei'}
2、混淆
代码混淆(Obfuscated code)是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。目前已经存在许多种功能各异的代码混淆器。————维基百科
- 配置:app目录下proguard-rules.pro文件,基本包含大多数场景
-ignorewarnings # 忽略警告,避免打包时某些警告出现
-optimizationpasses 5 # 指定代码的压缩级别
-dontusemixedcaseclassnames # 是否使用大小写混合
-dontskipnonpubliclibraryclasses # 是否混淆第三方jar
-dontpreverify # 混淆时是否做预校验
-verbose # 混淆时是否记录日志
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法# 保留了继承自Activity、Application这些类的子类
# 因为这些子类有可能被外部调用
# 比如第一行就保证了所有Activity的子类不要被混淆
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.view.View
-keep public class * extends android.support.v4.**# 保留Activity中的方法参数是view的方法,
# 从而我们在layout里面编写onClick就不会影响
-keepclassmembers class * extends android.app.Activity {
public void * (android.view.View);
}# 枚举类不能被混淆
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}# 保留自定义控件(继承自View)不能被混淆
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(***);
*** get* ();
}# 保留Parcelable序列化的类不能被混淆
-keep class * implements android.os.Parcelable{
public static final android.os.Parcelable$Creator *;
}# 保留Serializable 序列化的类不被混淆
-keepclassmembers class * implements java.io.Serializable {static final long serialVersionUID;private static final java.io.ObjectStreamField[] serialPersistentFields;!static !transient <fields>;private void writeObject(java.io.ObjectOutputStream);private void readObject(java.io.ObjectInputStream);java.lang.Object writeReplace();java.lang.Object readResolve();
}# 对R文件下的所有类及其方法,都不能被混淆
-keep public class com.foresee.R$*{
public static final int *;
}# 对于带有回调函数onXXEvent的,不能混淆
-keepclassmembers class * {
void *(**On*Event);
}#实体类不混淆
-keep class com.yong.multichannel.** {*;}#自定义控件不混淆
-keep class com.yong.multichannel.** {*;}
Android_多渠道打包_混淆相关推荐
- 友盟多渠道打包+混淆+腾讯云直播的推/拉流
一. 友盟多渠道打包 各种下载应用的软件网址,叫渠道分发商,如腾讯应用宝,百度,Google Play,多渠道打包通过了解下载量,有针对性的打广告 多渠道打包意义: 可以用这个APK,放上一段业务逻辑 ...
- android一行命令实现多渠道打包并自动进行资源混淆(Walle,AndResGuard)
多渠道打包和资源混淆的作用这里我就不再阐述了.网上有很多. 本篇博客我们来介绍一下如何实现多渠道打包之前先进行资源混淆,这样一来我们打出来的包都是已经进行过资源混淆的了. 如果你还有其他的需求,也可以 ...
- Android Studio多渠道打包和代码混淆教程
什么是Gradle Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域特定(DSL)语言.Androi ...
- 16.用360加固保完成混淆、多渠道打包
转载请注明出处 http://blog.csdn.net/qq_31715429/article/details/50977870 本文出自:猴菇先生的博客 百度搜索360加固保 应用加固; 上传应用 ...
- android多渠道打包(动态改变地址打包,只需改下版本号)
多渠道打包本来不想写的,因为比较麻烦,所以没打算写.只是前段时间因为电脑蓝屏重装了系统,导致不能打包了,所以又百度了半天,今天就写下来做个笔记. 废话不多说,进入主题. 配置多渠道打包就要使用友盟统计 ...
- Android 多渠道打包实操(更改包名、图标、主题资源 、替换常量、第三方SDK Appkey配置)
最近在做一个通用版的会员系统,给予不同的公司使用,先前是通过切换版本分支来管理的,后面发现实在是繁琐和痛苦管理,仅仅是需要更改不同的常量.主题资源.包名.图标等等,主体代码逻辑功能基本不变. 先前了解 ...
- 美团多渠道打包方案详解,速度快到白驹过隙
美团多渠道打包方案详解,速度快到白驹过隙 Andorid渠道市场有多分散呢?分散到比Android碎片化还严重,你还在为多渠道打包而头疼吗?美团提供了速度快到白驹过隙的多渠道打包方案.说的有点夸张,对 ...
- android 自定义apk名,Android Studio多渠道打包、自定义打包APK名称
现在为了推广产品,会在多个渠道应用市场发布应用,为了统计不同渠道的数据,需要在应用中表明渠道,如果一个一个去修改打包效率会很低.AS为我们提供了简便的方法,可以多渠道打包,一次打包所有的渠道包. 1. ...
- 自动化打包资源混淆集成python实践----资源混淆
前面自动化打包资源混淆集成python实践----打包一文讲述了四种打包方案,以及美团打包方案.apk注释添加渠道号方案的实现.这里讲集成资源混淆. 1.资源混淆带来的好处: 1)对资源文件起一定的保 ...
最新文章
- Swift - 访问通讯录联系人(使用系统提供的通讯录交互界面)
- Numpy中array和matrix转换
- Reverse Vowels of a String
- Android接入支付宝支付实现
- [AtCoder Regular Contest 123] 题解
- mysql如何给表字段加密_Mysql 字段加密
- 【Vue】—项目的目录结构介绍
- React文档(十九)不使用ES6
- Cookie介绍与操作
- 多元最大似然估计函数
- Clear Float
- rip和ospf vrrp vlan综合实验
- java反射——构造方法
- 高颜值:Redis官方可视化工具,功能强大!
- 联想新计算机开机黑屏,联想笔记本开机黑屏怎么办
- systrace如何使用
- Python之---【pandas】pd.concat(df)、df.append(df)
- VS2008简体中文版下载及安装破解
- linux搭建软路由,用 Alpine Linux 搭建软路由
- 【Netty官方文档翻译】引用计数对象(reference counted objects)
热门文章
- arduino定时器pdf_Arduino基础入门篇18—数字时钟
- 第七周:字符串 + 数组 + 指针
- MySQL命令行登录不上但是sqlyog能成功连接
- ubuntu系统下C语言编写简单程序
- 解决vue重复点击路由报错问题:Uncaught (in promise) NavigationDuplicated
- 性能测试:一种计算 TP90、TP95 和 TP99 等水位线的方法
- Educoder_Web_简历表页面的制作
- 技术集锦 | 大数据云原生技术实战及最佳实践系列
- 腾讯十大开源项目,最后一个太受欢迎了!
- 基于SqlServer环境下创建触发器、级联更新(删除、修改)