【问题标题】:How can I import android support library in a way where I can modify it?如何以可以修改的方式导入 android 支持库?
【发布时间】:2016-09-25 18:02:23
【问题描述】:

我想在 Android Studio 中 modify the ViewPager 自己类。我目前将 support-v4 库作为库依赖项,但我知道 Android Studio 不允许直接编辑外部库。

尝试 1: 我尝试在我的项目中的 java.android.support.v4.view 包中复制粘贴 ViewPager。当我对其进行修改和测试时,它似乎无法正常工作,因为它显示的是 ViewPager 的标准功能而不是修改后的功能。

尝试 2: 我尝试将其包名更改为 com.example.view 以将其与支持库区分开来。它不能很好地工作,因为 ViewPager 的某些功能依赖于其正确的包名称,这会导致一些错误,例如 ClassCastException。

尝试 3: 我尝试将 ViewPager 放在一个名为“lib”的新添加模块中,我将其包含在 settings.gradle 中,并作为我的“app”模块的依赖项添加。好像也没用。

我没有尝试过的是摆脱 support-v4 gradle 依赖项,而是将整个源代码复制粘贴到我的项目中。这有点多,我不想这样做,因为我想保持 support-v4 库是最新的,同时只覆盖 ViewPager 类。 (另外我不知道如何获得最新版本的源代码。我听说他们只开源每个主要 API 版本。)

我可以从这里做什么?提前致谢。

【问题讨论】:

  • 为什么要编辑 ViewPager?如果你想修改它的功能,你可以扩展它。
  • @Code-Apprentice 我想测试上面链接的代码,因为它正在修改 ViewPager 中的私有方法。不幸的是,代码没有按预期工作。

标签: android android-studio dependencies edit support-v4


【解决方案1】:

我可以从这里做什么?

重新尝试 2。如果需要,将其他类(例如,PagerAdapter)复制到您的 com.example.view 包中,然后切换您的应用代码以引用这些类。基本上,你是在 fork ViewPager,这可能需要你 fork 不止一个类。

请注意,其他需要真实 ViewPager 的代码(例如指标)将无法与您的分叉一起使用,并且它们本身需要分叉。

您可能希望考虑是否可以通过简单的子类来处理您的更改。

我知道Android Studio不允许直接编辑外部库

此外,正如您稍后在问题中指出的那样,如果您修改库,则每当该库发生更改时,您都必须重新应用这些修改。

另外我不知道如何获取最新版本的源代码

Java 位于您的硬盘上,位于 Android 存储库中。查找...sources.jar 文件。

【讨论】:

  • 成功了,谢谢。附带说明一下,上面链接的修改后的 ViewPager 代码无法按预期工作,因此修改支持库是徒劳的。
【解决方案2】:

一般来说,除非你真的知道自己在做什么,否则修改第三方库并不是一个好主意。无需了解所有类和方法的依赖关系,您就可以轻松破坏所有内容。

一个很好的选择是封装或继承。两者都是有充分根据的面向对象原则。通过封装,您可以创建一个 ViewPager 类型的成员字段,并根据需要委托对它的方法调用。通过继承,您可以扩展 ViewPager 并覆盖您希望提供不同行为的任何方法。继承最有可能是您的最佳解决方案,这样您就可以在通常使用 ViewPager 的任何地方使用新类。

【讨论】:

    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多