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