是否可以使用gradle任务在编译时修改库的packagename,类似于jarjar如何更改.jar文件的包名。
该库非常标准,包括如下:
dependencies {
compile 'com.scottyab:rootbeer-lib:0.0.6'
}
这样做的目的是更改名称以避免根隐藏应用程序静态检测库。
任何建议或指导非常感谢!感谢
答案 0 :(得分:2)
已经有一个Gradle插件可以做类似的事情。它重定位依赖项Shadow。
它捆绑并重定位库中的公共依赖项以避免类路径冲突.Shadow使用ASM库修改类字节代码以替换包名称和类的任何import语句。存储在包结构中的任何非类文件也会重新定位到新位置。
这是您重新定位包的方式:
shadowJar {
relocate 'junit.framework', 'shadow.junit'
}
代码片段会将junit.framework中任何类的位置重写为shadow.junit。例如,类junit.textui.TestRunner变为shadow.junit.TestRunner。在生成的JAR中,类文件从junit / textui / TestRunner.class重定位到shadow / junit / TestRunner.class。
答案 1 :(得分:1)
已经有一个Gradle插件可以做类似的事情。它重定位依赖项Shadow。
它捆绑并重定位库中的公共依赖项以避免类路径冲突.Shadow使用ASM库修改类字节代码以替换包名称和类的任何import语句。存储在包结构中的任何非类文件也会重新定位到新位置。
这是您重新定位包的方式:
{{1}}
代码片段会将junit.framework中任何类的位置重写为shadow.junit。例如,类junit.textui.TestRunner变为shadow.junit.TestRunner。在生成的JAR中,类文件从junit / textui / TestRunner.class重定位到shadow / junit / TestRunner.class。
答案 2 :(得分:0)
我可以看到您使用的库是一个开源库。你可以简单地从这里克隆回购https://github.com/scottyab/rootbeer 并修改它以使用您想要的任何名称。您甚至不需要将更改构建为aar库。只需将其作为Android Studio中的模块导入即可。
Gradle任务也很强大,应该可以用gradle做,但我不知道如何。