系统找不到proguard.cfg

本文介绍了两种解决在Android SDK中遇到的ProGuard配置文件缺失问题的方法。第一种方法是在指定目录下创建proguard.cfg文件并配置相关参数;第二种方法是通过Android SDK and AVD Manager更新SDK来解决问题。

错误提示:

\android-sdk-windows\tools\lib\proguard.cfg(系统知道不指定文件)

 

解决办法

方法一:在 \android-sdk-windows\tools\lib\目录下新建proguard.cfg文件

内容如下:

 

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-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 com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native ;
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}


方法二:通过Android SDK and AVD Manager更新SDK。方法二:通过Android SDK and AVD Manager更新SDK。方法二:通过Android SDK and AVD Manager更新SDK。

 

 

 

 

<plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.6.0</version> <executions> <!-- 以下配置说明执行mvn的package命令时候,会执行proguard--> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions> <configuration> <!-- 就是输入Jar的名称,我们要知道,代码混淆其实是将一个原始的jar,生成一个混淆后的jar,那么就会有输入输出。 --> <injar>${project.build.finalName}.jar</injar> <!-- 输出jar名称,输入输出jar同名的时候就是覆盖,也是比较常用的配置。 --> <outjar>${project.build.finalName}.jar</outjar> <!-- 是否混淆 默认是true --> <obfuscate>true</obfuscate> <!-- 配置一个文件,通常叫做proguard.cfg,该文件主要是配置options选项,也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 --> <proguardInclude>${project.basedir}/proguard.cfg</proguardInclude> <!-- 额外的jar包,通常是项目编译所需要的jar --> <libs> <lib>${java.home}/lib/rt.jar</lib> <lib>${java.home}/lib/jce.jar</lib> <lib>${java.home}/lib/jsse.jar</lib> </libs> <!-- 对输入jar进行过滤比如,如下配置就是对META-INFO文件不处理。 --> <inLibsFilter>!META-INF/**,!META-INF/versions/9/**.class</inLibsFilter> <!-- 这是输出路径配置,但是要注意这个路径必须要包括injar标签填写的jar --> <outputDirectory>${project.basedir}/target</outputDirectory> <!--这里特别重要,此处主要是配置混淆的一些细节选项,比如哪些类不需要混淆,哪些需要混淆--> <options> <!-- 可以在此处写option标签配置,不过我上面使用了proguardInclude,故而我更喜欢在proguard.cfg中配置 --> </options> </configuration> </plugin> ———————————————— 版权声明:本文为优快云博主「it噩梦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_37362891/article/details/144762045
最新发布
08-24
在 Maven 项目中使用 `proguard-maven-plugin` 进行代码混淆,可以通过在 `pom.xml` 文件中配置插件来实现。以下是一个详细的配置示例,假设你使用的是 `proguard-maven-plugin` 的 2.6.0 版本。 ### 配置 `proguard-maven-plugin` 在 `pom.xml` 文件中添加如下插件配置,确保它位于 `<build>` 标签内的 `<plugins>` 部分: ```xml <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.6.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> <configuration> <!-- 是否启用混淆 --> <obfuscate>true</obfuscate> <!-- 输入的jar包 --> <injar>${project.build.finalName}.jar</injar> <!-- 输出的jar包名称 --> <outjar>${project.build.finalName}-pg.jar</outjar> <!-- 指定混淆规则文件 --> <proguardInclude>${basedir}/proguard.conf</proguardInclude> <!-- 依赖库路径 --> <libs> <lib>${java.home}/lib/rt.jar</lib> <lib>${java.home}/lib/jsse.jar</lib> </libs> <!-- 附加混淆后的jar到Maven仓库 --> <attach>true</attach> <attachArtifactClassifier>pg</attachArtifactClassifier> <!-- 是否包含Maven元数据 --> <addMavenDescriptor>false</addMavenDescriptor> </configuration> </execution> </executions> </plugin> ``` ### 混淆规则文件 `proguard.conf` 你需要创建一个 `proguard.conf` 文件来定义 ProGuard 的混淆规则。以下是一个简单的示例内容: ```conf # 保留主类 -keep public class com.example.Main { public static void main(java.lang.String[]); } # 保留Spring Boot相关的类 -keep class org.springframework.boot.** { *; } -keep class org.springframework.context.** { *; } # 保留所有public类 -keep public class * { public protected *; } # 保留所有枚举类 -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } # 保留所有资源类 -keep class **.R$* { *; } # 优化选项 -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify ``` ### 构建项目 配置完成后,执行以下 Maven 命令来构建项目并进行代码混淆: ```bash mvn clean package ``` Maven 会在 `target` 目录下生成两个 JAR 文件: - 原始的 JAR 文件(未混淆) - 混淆后的 JAR 文件(带有 `-pg.jar` 后缀) ### 依赖混淆后的 JAR 如果你想在其他项目中依赖混淆后的 JAR 文件,可以在 `pom.xml` 中通过 `<classifier>` 标签引用: ```xml <dependency> <groupId>com.example</groupId> <artifactId>your-artifact-id</artifactId> <version>1.0-SNAPSHOT</version> <classifier>pg</classifier> </dependency> ``` ### 注意事项 - **混淆规则**:ProGuard 的混淆规则非常重要,确保关键类(如 Spring Boot 的启动类、Controller、Service 等)不会被错误地混淆或删除。 - **测试**:混淆后的代码需要进行充分测试,确保功能正常。 - **调试**:如果出现异常,可以通过 `-printmapping` 参数输出混淆映射文件,便于调试。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值