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

混淆Android库项目,当aspectj使用

汤弘文
2023-03-14

谢了。

共有1个答案

景子安
2023-03-14

我也有一个带有方面的android库。我的切入点不是针对我的库代码,而是针对应用程序的代码(例如Activity.onCreate上的切入点),所以使用我的库的人已经被期望将他们的android项目设置为AspectJ项目。

如果没有Proguard,一切都可以完美地工作,但是尽管我做了所有我能想到的异常,如果我的库jar被混淆了,我就不能得到应用的建议。我验证了aspect类以及所有方法和字段都保留在映射中。

下面是我的proguard配置的最终版本,它没有让各个方面工作,尽管所有的编译都很好,也没有错误:

...some config, the injar included my iajc compiled library project with aspects

-optimizations !code/allocation/variable,!code/simplification/arithmetic,!field/*,!class/merging/*
-optimizationpasses 3
-dontpreverify
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-verbose

-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

# This is the package of my aspects
-keep class my.package.aspectj.** { *; }
# This is all the public methods that my aspect code calls in to
-keep class my.package.allthethingsmyaspectscall.** { *; }

 ...keep some other classes not related to this
 类似资料:
  • 在proguard-project.txt中使用-keep类org.xbill.**{*;}似乎不能解决这个问题。

  • 问题内容: 是否可以仅将ProGuard用于混淆。我不希望ProGuard从我的项目中删除任何类。我打算使用ProGuard只是为了混淆,以防止进行反向工程。 问题答案: 是的,通过指定 您可以在ProGuard手册中找到有关所有配置选项的详细信息。 请注意,缩小和优化可能有助于防止反向工程。

  • 当我用debug模式启动intentservice的子类时,发现它先调用onstart方法,然后执行onStartCommand方法,但在onStartCommand方法中,它没有调用“onstart(intent,startId);” 由于我看到了源代码,我认为应该是首先调用onStartCommond方法,然后在onStartCommond方法中做onStart方法,正如上面的结果显示的,我混

  • 我一直在摆弄Proguard配置,我想测试只是为了优化 但我仍然会遇到这样的错误: java.lang.IllegalArgumentExc0019:找不到[org/apache/log/log4j/core/jackson/Log4jXmlMoules](有1个已知的超级类)和[org/apache/log/log4j/core/jackson/Log4jJsonMoules](有4个已知的超级

  • Powershell的混淆目前已经使用的越来越多,国内外也有了较多的研究,在今年的BH大会上也有对应的议题,关注点是反混淆,那么里面的一些姿势很值得我们学习,我们提供一些混淆实例,来让大家对于PS的混淆做到一个初步了解,也为防御混淆提供一些思路。 实例 在混淆之前,先看看powershell编码执行的方式。 -EC,-EncodedCommand,-EncodedComman,-EncodedCo

  • vite 项目混淆加密 怎么配置?下面这样配置会报错caught TypeError: Failed to resolve module specifier "vue". Relative references must start with either "/", "./", or "../". 想要只在生产环境build添加加密,应该怎么写呢?