AS混淆打包和多渠道打包总结
来源:互联网 发布:邓云天觉知视频 编辑:程序博客网 时间:2024/06/12 07:32
---------------------------------------------------我的总结------------------------------------------------------
gradle中:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
-----------------------------------------proguard-rules.pro中---------------------------------------
#-----------------混淆配置设定------------------------------------------------------------------------
-optimizationpasses 5 #指定代码压缩级别
-dontusemixedcaseclassnames #混淆时不会产生形形色色的类名
-dontskipnonpubliclibraryclasses #指定不忽略非公共类库
-dontpreverify #不预校验,如果需要预校验,是-dontoptimize
-ignorewarnings #屏蔽警告
-verbose #混淆时记录日志
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #优化
#-----------------不需要混淆第三方类库------------------------------------------------------------------
-dontwarn android.support.v4.** #去掉警告
-keep class android.support.v4.** { *; } #过滤android.support.v4
-keep interface android.support.v4.app.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
#-----------------不需要混淆系统组件等-------------------------------------------------------------------
-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.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * extends android.app.backup.BackupAgentHelper
-keep class com.classtc.test.entity.**{*;} #过滤掉自己编写的实体类
#----------------保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在------------------------------------
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
---------------------------------------------------多渠道打包(友盟)-------------------------------------------------------------
先在Manifest中:
<meta-data android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
在gradle中:
//多渠道打包
android {
// 打包渠道List
productFlavors {
LianXiang {}
Baidu {}
AnZhi{}
F360{}
xiaomi {}
MeiZu{}
WanDouJia{}
QQYingYongBao{}
}
// 批量处理,直接使用flavor的name作为APP_CHANNEL_VALUE的值
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
然后Build--》Generate Signed APK
gradle中:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
-----------------------------------------proguard-rules.pro中---------------------------------------
#-----------------混淆配置设定------------------------------------------------------------------------
-optimizationpasses 5 #指定代码压缩级别
-dontusemixedcaseclassnames #混淆时不会产生形形色色的类名
-dontskipnonpubliclibraryclasses #指定不忽略非公共类库
-dontpreverify #不预校验,如果需要预校验,是-dontoptimize
-ignorewarnings #屏蔽警告
-verbose #混淆时记录日志
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #优化
#-----------------不需要混淆第三方类库------------------------------------------------------------------
-dontwarn android.support.v4.** #去掉警告
-keep class android.support.v4.** { *; } #过滤android.support.v4
-keep interface android.support.v4.app.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
#-----------------不需要混淆系统组件等-------------------------------------------------------------------
-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.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * extends android.app.backup.BackupAgentHelper
-keep class com.classtc.test.entity.**{*;} #过滤掉自己编写的实体类
#----------------保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在------------------------------------
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
---------------------------------------------------多渠道打包(友盟)-------------------------------------------------------------
先在Manifest中:
<meta-data android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
在gradle中:
//多渠道打包
android {
// 打包渠道List
productFlavors {
LianXiang {}
Baidu {}
AnZhi{}
F360{}
xiaomi {}
MeiZu{}
WanDouJia{}
QQYingYongBao{}
}
// 批量处理,直接使用flavor的name作为APP_CHANNEL_VALUE的值
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
然后Build--》Generate Signed APK
0 0
- AS混淆打包和多渠道打包总结
- AS多渠道打包和代码混淆
- app打包、混淆、加固和多渠道打包
- Gradle多渠道打包以及混淆配置总结
- Android混淆及多渠道打包总结
- 多渠道打包-混淆打包-反编译
- Gradle 多渠道打包和 代码的混淆
- Android_AS多渠道打包和代码混淆教程
- AS多渠道打包
- AS多渠道打包
- AS 多渠道打包 generateADebugSources
- AS多渠道打包
- as中apk签名和多渠道打包
- as中apk签名和多渠道打包
- as中apk签名和多渠道打包
- android ant多渠道混淆打包
- android ant多渠道混淆打包
- android ant多渠道混淆打包
- Windows 2008R2 IIS7.5 下访问ASP网页报错的解决办法
- hdu 1530 Maximum Clique——最大团
- FJ的字符串
- angular中的$http服务及promiseA+规范总结
- Linux 内核clk 添加clk provider
- AS混淆打包和多渠道打包总结
- java中的消息转换器--HttpMessageConverter 分类:学习日记
- 利用navicat创建存储过程、触发器和使用游标的简单实例
- 浅谈原生JS和jQuery操作DOM
- 实现下拉框和搜索框一体功能
- caffe 01 win10 运行环境配置(不需要开发环境)
- 【Mysql】Mysql 各个版本区别
- 深入研究Servlet线程安全性问题
- Hadoop:CCAH及CCA系列认证