首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在android中排除外部第三方依赖的ProGuard

在Android中,可以使用ProGuard工具来排除外部第三方依赖。ProGuard是一个Java字节码优化和混淆工具,可以帮助减小APK文件的大小并提高应用的安全性。

要在Android中排除外部第三方依赖的ProGuard,可以按照以下步骤进行操作:

  1. 配置ProGuard:在项目的根目录下的build.gradle文件中,找到android闭包,并在其中添加以下代码:
代码语言:txt
复制
buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

这将启用ProGuard并指定了ProGuard配置文件的位置。

  1. 创建ProGuard配置文件:在项目的app目录下,创建一个名为proguard-rules.pro的文件。
  2. 配置ProGuard规则:在proguard-rules.pro文件中,添加以下规则来排除外部第三方依赖:
代码语言:txt
复制
# 保留Android Support库
-keep class android.support.** { *; }
-keep interface android.support.** { *; }

# 保留Gson库
-keep class com.google.gson.** { *; }
-keep interface com.google.gson.** { *; }

# 保留其他第三方库
-keep class com.example.library.** { *; }
-keep interface com.example.library.** { *; }

在这个例子中,我们保留了Android Support库、Gson库和一个名为com.example.library的第三方库。你需要根据你的项目中使用的第三方库来添加相应的保留规则。

  1. 运行ProGuard:在Android Studio中,选择Build -> Build APK或Build -> Generate Signed Bundle来构建你的应用。ProGuard将在构建过程中自动运行,并根据配置文件中的规则来排除外部第三方依赖。

通过以上步骤,你可以在Android中使用ProGuard来排除外部第三方依赖。这样可以减小APK文件的大小,并且提高应用的安全性。请注意,你需要根据你的项目中使用的第三方库来配置相应的保留规则,以确保应用的正常运行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ProGuardAndroid使用姿势

在您读 ProGuard 手册时,您没必要看那些 输入 / 输出部分,因为这些 Android Gradle 打包插件会替您指定输入源(您和第三方代码) 和 Android jar 库(您构建应用时用到...通常途径是修正您依赖或者在您 ProGuard 配置中添加 -dontwarn 规则。...这些警告一个原因就是,您构建路径中没有加入需要依赖 JARs,使用了 provided (仅编译时)依赖。而有时候,在 Android 上这些代码依赖在运行时并不会被真正调用。...当 ProGuard 移除过少类 所有应用都可以使用 Android 内置 ProGuard 一些安全默认规则,保留 View getter 和 setter 方法,因为他们通常会被反射来访问...关于 ProGuard第三方库 就像您有责任为您自己代码提供 keep 规则一样,那些第三方作者们也有义务向您提供必要混淆规则配置来避免开启 Proguard 导致构建失败或者应用崩溃。

2.6K40
  • Android 代码混淆规则

    大家好,又见面了,我是你们朋友全栈君。 1. Proguard介绍 Android SDK自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。...如果开启了混淆,Proguard默认情况下会对所有代码,包括第三方包都进行混淆,可是有些代码或者第三方包是不能混淆,这就需要我们手动编写混淆规则来保持不能被混淆部分。 2....Proguard作用 Android“混淆”可以分为两部分,一部分是 Java 代码优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,将移除项目及依赖库中未被使用资源(资源压缩严格意义上跟混淆没啥关系...gradle 在四处地方寻找重复资源: src/main/res/ 路径 不同构建类型(debug、release等等) 不同构建渠道 项目依赖第三方库 合并资源时按照如下优先级顺序: 依赖 ->...--------------------------------------------------------------- #---------------------------------2.第三方依赖

    2.5K10

    android开发笔记之 Android代码混淆打包

    一, 我们用到反射地方。 二, 我们代码依赖于系统接口,比如被系统代码调用回调方法,这种情况最复杂。...proguard 配置 最常用配置选项 -dontwarn 缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到类,没有正确引用。如果不配置的话,系统就会报错。...proguard 问题和风险 代码混淆后虽然有混淆优化好处,但是它往往也会带来如下几点问题 1,混淆错误,用到第三方时候,必须告诉 proguard 不要检查,否则proguard...其他Anroid 官方建议 不混淆 android.app.backup.BackupAgentHelper android.preference.Preference...告诉我来修改配置文件(已经保留就不需要了) 目前系统不检查第三方库为 -dontwarn android.support.** -dontwarn com.tencent.** -dontwarn

    81720

    详解Android代码混淆实战

    什么是代码混淆: Android SDK 自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。...如果开启了混淆,Proguard默认情况下会对所有代码,包括第三方包都进行混淆,可是有些代码或者第三方包是不能混淆,这就需要我们手动编写混淆规则来保持不能被混淆部分。...### # 保留我们使用四大组件,自定义Application等等这些类不被混淆 # 因为这些子类都有可能被外部调用 -keep public class * extends android.app.Activity...,无法正常解析) 加密类 数据库实体类 工具类 项目中应用到第三方工具类(okhttp,eventbus,rxjava等),需要根据具体工具介绍进行操作 保留lib和compile引用第三方jar...:保留引用科大讯飞第三方jar包不被混淆 java -keep class com.iflytek.** { *; } #网络请求等与外界通信不能混淆 -keep class com.xxxxx.function

    1.6K51

    Android 构建过程分析

    资源合并 如果项目引入了android support包,又或许依赖于其它第三方aar库,那构建前会将aar解压并与本地资源合并,这里资源主要包括assets目录,res目录及Androidmanifest.xml...当第三方依赖assets或res文件与本地文件有冲突时,会优先选用本地文件。...但res/values略有不同,此目录下strings.xml、color.xml、styles.xml等文件会被整合到一个叫values.xml文件中去,后与各第三方依赖values.xml进行内容上合并...Androidmanifest.xml合并相比来说则要复杂一些,除了第三方依赖manifest,项目还可以在不同目录下分别拥有manifest文件。...打包签名 此时万事俱备,只要把资源包app.ap_、可执行文件classes.dex及项目(包含第三方依赖)中非源码文件一起添加到压缩包中去,我们安装包(.apk文件)也就生成了。

    3.2K40

    android代码混淆

    二, 我们代码依赖于系统接口,比如被系统代码调用回调方法,这种情况最复杂。 三, 是我们java 元素名称是在配置文件中配置好。...proguard 配置 最常用配置选项 -dontwarn 缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到类,没有正确引用。如果不配置的话,系统就会报错。...proguard 问题和风险 代码混淆后虽然有混淆优化好处,但是它往往也会带来如下几点问题 1,混淆错误,用到第三方时候,必须告诉 proguard 不要检查,否则proguard 会报错。...其他Anroid 官方建议 不混淆 android.app.backup.BackupAgentHelper android.preference.Preference com.android.vending.licensing.ILicensingService...告诉我来修改配置文件(已经保留就不需要了) 目前系统部检查第三方库为 -dontwarn android.support.** -dontwarn com.tencent.** -dontwarn

    1.6K80

    AndroidStudio Gradle第三依赖统一管理实现方法

    在很多时候我们使用AndroidStudio开发安卓App时候都会引入第三方库,在一个project下我们可以有很多module,每一个module就是一个app,但是每个module在进行第依赖第三方时候...,有可能依赖第三方版本不同,记住每次使用版本号也不太可能,所以统一管理第三方依赖就尤其重要。...我们可以将依赖第三方集中放入到一个gradle中,然后在需要使用module中将其引入即可,这样很方便进行了不同版本管理了。...首先我们在project下新建一个叫“config.gradle”文件(名字随便起),然后将要所有第三方依赖库进行配置。...rootProject.ext.dependencies.gson // log打印工具 compile rootProject.ext.dependencies.logger } 这样是不是很方便管理依赖第三方

    87440

    Android 代码混淆机制

    :将project.properties文件中“# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt...编写混淆脚本 找到Android项目目录下proguard-project.txt”文件,在proguard-project.txt文件中,你需要做就是指定混淆规则,还有指明要过滤那些文件或代码块...5.过滤引入第三方jar包,so文件和外部lib等 //过滤第三方jar包,com.google.gson替换成要想要过滤包名 -dontwarn com.google.gson.** -keep...二、通过ProGuard工具混淆代码 如果你想把你Android项目打包成jar文件然后再混淆,那这种方法比较适合 下载运行ProGuard工具 1.首先到http://proguard.sourceforge.net.../下载proguard,目前我下载并使用proguard5.1 2.解压proguard5.1,执行 bin目录下proguardgui.bat文件打开ProGuard工具 从Android项目到处

    1.5K20

    Gradle 之 Task 使用

    release {               minifyEnabled false               proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...,分别是: repositories:配置我们仓库地址,闭包内部属性是RepositoryHandler dependencies:配置工程插件依赖地址,gradle本身需要引入第三方库   /*...      scriptHandler.dependencies {           //gradle本身需要引入第三方库           classpath 'com.android.tools.build...:gradle:3.3.2'       }   }   appbuild.gradle   //应用程序所需要第三方库   dependencies {   //添加文件树或者文件夹依赖...比如:工程A依赖于工程B,工程B依赖于工程C,工程A传递依赖于工程C,不能进行传递依赖,是不确定,可能B升级后就不需要依赖于C,那么A不会在C找到所需东西 Gradle 执行外部命令进行拷贝文件到磁盘下

    90010

    Groovy高级用法

    release {               minifyEnabled false               proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...,分别是: repositories:配置我们仓库地址,闭包内部属性是RepositoryHandler dependencies:配置工程插件依赖地址,gradle本身需要引入第三方库   /*...      scriptHandler.dependencies {           //gradle本身需要引入第三方库           classpath 'com.android.tools.build...:gradle:3.3.2'       }   }   appbuild.gradle   //应用程序所需要第三方库   dependencies {   //添加文件树或者文件夹依赖...比如:工程A依赖于工程B,工程B依赖于工程C,工程A传递依赖于工程C,不能进行传递依赖,是不确定,可能B升级后就不需要依赖于C,那么A不会在C找到所需东西 Gradle 执行外部命令进行拷贝文件到磁盘下

    89820

    Groovy 基本类型与闭包

    release {               minifyEnabled false               proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...,分别是: repositories:配置我们仓库地址,闭包内部属性是RepositoryHandler dependencies:配置工程插件依赖地址,gradle本身需要引入第三方库   /*...      scriptHandler.dependencies {           //gradle本身需要引入第三方库           classpath 'com.android.tools.build...:gradle:3.3.2'       }   }   appbuild.gradle   //应用程序所需要第三方库   dependencies {   //添加文件树或者文件夹依赖...比如:工程A依赖于工程B,工程B依赖于工程C,工程A传递依赖于工程C,不能进行传递依赖,是不确定,可能B升级后就不需要依赖于C,那么A不会在C找到所需东西 Gradle 执行外部命令进行拷贝文件到磁盘下

    61620

    Gradle之Project Api 使用

    release {               minifyEnabled false               proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...,分别是: repositories:配置我们仓库地址,闭包内部属性是RepositoryHandler dependencies:配置工程插件依赖地址,gradle本身需要引入第三方库   /*...      scriptHandler.dependencies {           //gradle本身需要引入第三方库           classpath 'com.android.tools.build...:gradle:3.3.2'       }   }   appbuild.gradle   //应用程序所需要第三方库   dependencies {   //添加文件树或者文件夹依赖...比如:工程A依赖于工程B,工程B依赖于工程C,工程A传递依赖于工程C,不能进行传递依赖,是不确定,可能B升级后就不需要依赖于C,那么A不会在C找到所需东西 Gradle 执行外部命令进行拷贝文件到磁盘下

    1.1K20

    Android Studio3.1.0升级问题记录

    Android Studio3.1.0升级问题记录 每次升级Android Studio时,一般情况下Gradle版本也会相应升级,我之前Android Studio 3.0.1、Gradle 是4.1...还是乖乖改吧,由于是我们依赖library中使用了compile,相当于是library依赖了一个第三方库,直接改为implementation就相当于屏蔽掉了app对library依赖第三方库...api访问权限,而我们app刚好用到了library依赖第三方api,所以直接改为implementation是不行,要想让app能访问到就将其改为 api就可以了,其实这不是一个好解决办法...,最好解决办法是,library中封装一层app访问library依赖第三方库api方法,这样的话app是和library依赖第三方库是没有任何关系,这样就降低了app与library依赖第三方耦合性...,这样也体现了“第三方库隔离”原则,如果以后依赖库变了,你只需要修改library中依赖库及app调用方法即可,不用动app里面的代码了~ 第三个错误如下 Duplicate zip entry

    88920
    领券