Android Studio Gradle配置,代码混淆,多渠道一键打包
来源:互联网 发布:js修改object类的内容 编辑:程序博客网 时间:2024/05/21 06:17
以前用eclipse的时候多渠道打包往往依赖于第三方插件,不是很方便也经常打包出错。有了android studio就方便多了。
一、我们来先看看Gradle配置
apply plugin: 'com.android.application'android { compileSdkVersion 24 //编译的sdk版本 buildToolsVersion '24.0.3' defaultConfig { applicationId "com.android.google"//应用包名 minSdkVersion 14 targetSdkVersion 19 versionCode 1 versionName "5.1.0" // 方法数突破64k的限制 multiDexEnabled true vectorDrawables.useSupportLibrary = true } //配置签名信息,签名钥匙 signingConfigs { release { keyAlias 'keyalias' keyPassword 'keypassword' storeFile file('E:/Lee/keystore/keystore')//签名钥匙的文件目录 storePassword 'storepassword' } } buildTypes { release { minifyEnabled true//这个值决定了打包时是否要执行代码混淆 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//这个是代码混淆文件 signingConfig signingConfigs.release//指定使用的是signingConfigs里面的release配置进行打包 zipAlignEnabled true//是否进行压缩 } } useLibrary 'org.apache.http.legacy'//如果要使用apache的网络请求,要配置这个lib sourceSets { main { assets.srcDirs = ['src/main/assets', 'src/main/assets/'] } } //配置打包渠道 productFlavors { bd{} "360"{} //渠道不能以数字开头,否则会报错,所以加一个引号,可以打包,并且渠道名是360 yyb{} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [CHANNEL_NAME: name]//manifest里面的meta-data定义的友盟渠道名//这里会用上面productFlavors里面的渠道名替换CHANNEL_NAME }}
//第三方依赖包dependencies { compile fileTree(include: ['*.jar'], dir: 'src/main/libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.0.0' compile 'com.android.support:design:24.0.0' compile 'com.jaredrummler:android-processes:1.0.3' compile 'com.android.support:recyclerview-v7:24.0.0' compile files('src/main/libs/libammsdk.jar') compile files('src/main/libs/android-async-http-1.4.5.jar') compile files('src/main/libs/litepal-1.3.0.jar') compile files('src/main/libs/Msc.jar') compile files('src/main/libs/jpush-android-2.1.5.jar') compile files('src/main/libs/umeng-analytics-v6.0.1.jar') compile files('src/main/libs/glide-3.6.1.jar') compile files('src/main/libs/zbar.jar') compile files('src/main/libs/gson-2.2.4.jar')}
二、manifest的配置在manifest里面配置友盟的渠道名称,打包的时候,会根据Gradle
的配置,进行逐一替换。也就是在生成bd渠道包的时候会用bd替换CHANNEL_NAME,从而达到多渠道打包。
三、代码混淆
很多时候android 的代码很容易被反编译,所以为了保护我们的程序不被盗用,我们对他进行代码混淆,已增加
反编译难度,或者说是就算反编译出来,也很难看的懂。代码混淆文件如下图
#类 一些系统自带的类可以不用混淆
-keepclassmembers class fqcn.of.javascript.interface.for.webview { public *;}-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.Preferenc#第三方类库,第三方类库的代码也要避免混淆,不然在运行时会出现找不到类的错误
-keep class cn.sharesdk.** {*;}-keep class cn.sharesdk.sina.weibo** {*;}-keep class com.sina.weibo.sdk.** {*;}-keep class com.sina.sso.** {*;}-keep class com.nostra13.universalimageloader.** {*;}-keep class com.loopj.android.http {*;}-keep class com.google.gson.**{*;}-keep class org.apache.http.entity.mime.**{*;}-keep class org.apache.http.entity.mime.content.**{*;}-keep class cn.jpush.a.a**{ *;}-keep class cn.jpush.android.**{ *;}-keep class com.tencent.mm.sdk.** {*;}-keep class com.tencent.mm.a.** {*;}-keep class com.tencent.wxop.stat.** {*;}-keep class com.tencent.a.a.a.a**{*;}-keep class com.tencent.stat.**{*;}-keep class com.tencent.connect.**{*;}-keep class com.tencent.connect.auth.**{*;}-keep class com.tencent.connect.avatar.**{*;}-keep class com.tencent.connect.common.**{*;}-keep class com.tencent.connect.dataprovider.**{*;}-keep class com.tencent.connect.share.**{*;}-keep class com.tencent.tauth.**{*;}-keepclassmembers class * { public <init>(org.json.JSONObject);}-keep public class [com.android.google].R$*{public static final int *;}-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);}#自定义布局-keep class com.google.android.view.datepicker.**{*;}
-keep class com.google.android.view.switchButton.**{*;}-keep class com.google.android.view.**{*;}-keep class com.google.android.widget.**{*;}-dontwarn com.tencent.**-dontwarn uk.co.senab.photoview.**-dontwarn cn.jpush.**-dontwarn com.google.**-keep class com.google.protobuf.**{*;}-keep class **.R$* {*;}#工程中含有第三方jar包,因为build,所以不用再配置#内部实体类-keepattributes Exceptions,InnerClasses,...-keep class com.google.android.ectService$AppInfo{ *;}
-keep class com.google.android.QuickService//一些在别的app要调用的类也不能混淆
,否则被混淆之后再按照之前定义好的路径和类名就找不到了
-keepclasseswithmembers class *{ public *;}-keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>;}
四、所有这些配置完了就可以进行混淆打包了
只要在Terminal里面输入打包指令 gradlew assembleRelease,直接回车就自动开始打包了
1 0
- Android Studio Gradle配置,代码混淆,多渠道一键打包
- 【Android Studio】代码混淆与多渠道打包
- android studio多渠道打包+混淆配置
- Android Studio gradle 配置 多渠道打包
- Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解
- Android 多渠道打包 gradle部分,如何处理代码混淆问题
- Android Studio Gradle 多渠道打包
- Android Studio--Gradle多渠道打包
- Android Studio--Gradle多渠道打包
- Android studio gradle 多渠道打包
- Android Studio Gradle多渠道打包
- Android studio gradle 多渠道打包
- Android Studio--Gradle多渠道打包
- Android Studio Gradle多渠道打包
- android studio gradle 多渠道打包
- Android Studio Gradle多渠道打包
- 【Android Studio】gradle多渠道打包
- Gradle 多渠道打包和 代码的混淆
- 系统学习机器学习之神经网络(六) --GrossBerg网络
- cocos2dx-3.6在android下实现手机震动功能
- 用PythonPi实现门禁系统-模式识别
- SSH商城Demo --- 五、搭建SSH开发环境,配置基本信息
- cmd下的常用命令
- Android Studio Gradle配置,代码混淆,多渠道一键打包
- FL Studio钢琴卷轴Riff命令如何用
- iOS 开发关于.pch文件问题
- puppt(1)
- vs2013 文件引入
- 调整nginx正确服务react-router应用
- keras使用稀疏矩阵输入
- Android 获取SHA1以及keystore不是内部或外部命令,也不是可运行程序问题的解决
- LeetCode-Array-169. Majority Element