【发布时间】:2011-07-01 12:09:16
【问题描述】:
我从 apt 工具页面中了解到,可以将 AnnotationProcessors 创建到 generate new derived files (source files, class files, deployment descriptors, etc.)。我正在寻找这样做的例子。
我的需要是在编译时对所有带注释的字符串进行编码,这样读取类文件就不允许读取静态字符串:
基本代码:
String message = (@Obfuscated "a string that should not be readable in class file");
应该重做为:
String message = new ObfuscatedString(new long[] {0x86DD4DBB5166C13DL, 0x4C79B1CDC313AE09L, 0x1A353051DAF6463BL}).toString();
基于静态ObfuscatedString.obfuscate(String) method of the TrueLicense framework,处理器可以生成代码来替换带注释的字符串。实际上,此方法会生成字符串“new ObfuscatedString([numeric_code]).toString()”。
在运行时,ObfuscatedString 的 toString() 方法能够返回以数字代码编码的字符串。
知道如何编写 AnnotationProcessor 的 process() 方法来编辑带注释的代码吗?
提前致谢,
【问题讨论】:
-
这正是混淆器在你编译了你的源代码之后所做的。为工作使用正确的工具。
-
Proguard 不支持字符串混淆。您知道其他一些处理此功能的免费混淆器吗?
标签: java annotations apt