当前位置: 首页 > 知识库问答 >
问题:

proguard android优化构建失败

严景焕
2023-03-14

我正在尝试禁用所有日志

-assumenosideeffects class android.util.Log {

public static *** v(...);
public static *** i(...);
public static *** w(...);
public static *** d(...);
public static *** e(...);

}

 -assumenosideeffects class android.util.Log { *; }

但是当我设置

          proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

生成失败错误

    UNEXPECTED TOP-LEVEL EXCEPTION:
Error:java.lang.InterruptedException: Too many errors
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:600)
... 4 more
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.

com.android.build.api.transform。TransformException:com.android.ide.common.process。ProcessException:org.gradle.process.internal。ExecException:进程“command”/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/bin/Java”以非零退出值2结束

有了这个proguardFiles getDefaultProguardFile(' proguard-Android . txt '),' proguard-rules.pro '它的建立,但日志是可见的

建议的解决方案是使用最新的编译器从源代码重新编译类,并且不指定任何“-target”类型选项。忽略此警告的结果是,此类上的反射操作将错误地指示它不是内部类。

未捕获的翻译错误:com.android.dx.cf.code。SimException:局部变量类型不匹配:尝试使用int类型的局部变量设置或访问java.lang.Object类型的值。这是忽略局部变量信息的.class转换工具的症状。

共有2个答案

子车鸿才
2023-03-14

您可以尝试在包com.example.mylog中创建一个虚拟的Log类,其中包含v, i, w, d, e的NOP,然后使用此proGuard重新映射

android.util.Log -> com.example.mylog.Log

使用选项 -应用映射

耿建弼
2023-03-14

请使用以下< code>proguard作为参考,因为在优化期间,本机方法需要保持原样。

-dontusemixedcaseclassnames
-optimizationpasses 5
-allowaccessmodification
-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 * extends android.support.v4.app.Fragment
-keep public class * extends android.app.Fragment
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
 native <methods>;
}
-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*(...);
}
-keepclasseswithmembers class * {
 public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
 public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
 public void *(android.view.View);
}
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
 public static **[] values();
 public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
 public static final android.os.Parcelable$Creator *;
}

希望这有帮助。

 类似资料:
  • 本文向大家介绍浅谈React + Webpack 构建打包优化,包括了浅谈React + Webpack 构建打包优化的使用技巧和注意事项,需要的朋友参考一下 本文介绍了React + Webpack 构建打包优化,分享给大家,具体如下: 使用 babel-react-optimize 对 React 代码进行优化 检查没有使用的库,去除 import 引用 按需打包所用的类库,比如 lodash

  • 根据用户的使用习惯从费用和安全两方面提供优化建议,达到费用优化,提高安全性的目的。 成本优化 通过系统内置规则,将匹配规则的闲置浪费或安全性较低的资源扫描出来并按照建议进行处理,从而达到节约成本、提高资源安全性的目的。 安全检查 通过系统内置规则,将匹配规则的安全性较低的资源扫描出来并按照建议进行处理,从而提高系统安全性的目的。

  • 架构及开发过程优化建议: 路由尽量使用域名路由或者路由分组; 在路由中进行验证和权限判断; 合理规划数据表字段类型及索引; 结合业务逻辑使用数据缓存,减少数据库压力; 在应用完成部署之后,建议对应用进行相关优化,包括: 如果开发过程中开启了调试模式的话,关闭调试模式(参考调试模式); 通过命令行生成类库映射文件; 通过命令行生成配置缓存文件; 生成数据表字段缓存文件;

  • 我尝试使用现有的工作项目进行javascript构建,但它给我一个如下所示的构建错误,有什么想法吗? 该项目适用于Android和IOS,我在没有任何设置更改或其他任何更改的情况下进行了构建 全栈跟踪:

  • 我试着鼓包grpc ***跳过codegen的构建和proto文件的编译,因为SkipCodeGen=true 失败:生成失败,出现异常。 > 其中:构建文件'/home/susi/grpc-java/Build.gradle'行:31

  • 我已经下载了Android SDK工具。解压缩文件,然后在目录工具中运行这些命令 生成失败/home/live/devel/android/tools/myapp/BUILD.xml:90:执行此行时出现以下错误:/home/live/devel/android/tools/ant/BUILD.xml:108:taskdef使用类加载器AntClassLoader找不到类com.android.a