问题陈述:
我只想在开发环境上使用库,而不要在发行版(应用程序商店发行版)上使用库。
而且我也不希望该库也内置在发行版apk中。

我的视野:

所以,我有一个这样的环境设置:

发展-

  • 调试
  • 发行

  • 店铺-
  • 调试
  • 发布->这将播放
  • 商店

    在gradle中我添加了-
    debugCompile 'com.some.library'
    

    加载该库以进行开发-调试存储-调试

    然后我创建了两个Application类,
  • ApplicationWithoutDebugLibrary 扩展了MultiDexApplication-不初始化库的应用程序类。
  • ApplicationWithDebugLibrary 扩展了ApplicationWithoutDebugLibrary-初始化库
  • 的应用程序类

    我已经在gradle中定义了加载不同口味的不同应用程序文件。
    productFlavors {
                Development {
                    applicationId "xyzzzz"
                    manifestPlaceholders = [application:"com.xyz.ApplicationWithDebugLibrary"]
                }
                store {
                    applicationId "11111"
                    manifestPlaceholders = [application:"com.xyz.ApplicationWithoutDebugLibrary"]
                }
    }
    

    在 list 中,我这样写:
    <application
        android:name="${application}"...
    

    因此,对于Debug来说,它工作正常,但是当我构建Store-Release / Development-Release apk时,由于我正在使用该库,因此无法编译ApplicationWithDebugLibrary.java,因为该库未在gradle文件中进行编译以释放版本。

    因此,有什么方法可以避免加载此类以实现商店发行版本的味道,或者有其他替代解决方案,其中我只能在开发环境中加载该库。

    最佳答案



    从逻辑上讲,没有办法神奇地删除您的代码使用的库,并且由于缺少符号,因此仍然可以正确编译所有其余代码。因此,您必须创建“虚拟”库,该库具有与调试库相同的API,但没有方法主体。或者,您可以用一些代码包装lib,这些代码以后可以交换为生产版本,而无需使用库依赖性。

    Android Gradle插件可以根据构建的类型来帮助构建具有不同版本的依赖项:



    docs:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Dependencies-Android-Libraries-and-Multi-project-setup

    关于java - Android:加载库并仅将其用于开发分支而不用于发行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43201205/

    10-10 06:22