【问题标题】:Obfuscating Android library project, when aspectj used混淆Android库项目,当aspectj使用时
【发布时间】:2013-10-03 14:08:27
【问题描述】:

我有 Android 库项目。有一些带有切入点的 .aj 文件 (aspectJ)。 我需要混淆编译的工件(jar)。当我混淆它并将其作为库添加到另一个项目时,方面停止工作。 任何人都可以帮助使用 ProGuard 进行混淆吗?一些配置示例或任何有用的信息。 可能根本不可能?有其他选择吗?

谢谢。

【问题讨论】:

    标签: android obfuscation proguard


    【解决方案1】:

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

    没有 Proguard,一切都可以完美运行,但尽管我能想到的每一个例外,但如果我的库 jar 被混淆,我无法获得应用建议。我验证了方面类以及所有方法和字段都保存在映射中。

    这是我的 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
    

    所有这些我的方面仍然不适用。

    我的解决方案是在安装时将我的方面文件复制到客户端应用的项目中,这样它就位于他们的应用类路径中,并在他们的应用构建时被编织。

    【讨论】:

      猜你喜欢
      • 2013-07-26
      • 2012-09-10
      • 1970-01-01
      • 2013-04-11
      • 2013-07-24
      • 2014-05-31
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多