Android:加载库并仅将其用于开发分支而不用于发行

2019年4月11日 8点热度 0条评论

问题陈述:
我只想在开发环境上使用库,而不要在发行版(应用程序商店发行版)上使用库。
而且我也不希望该库也内置在发行版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文件中进行编译以释放版本。

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

    解决方案如下:

    So for Debug it is working fine but when I am building Store-Release/ Development-Release apk it is not able to compile ApplicationWithDebugLibrary.java, as I am using the library, which is not compiled in gradle file for release flavour

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

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

    The compile configuration is used to compile the main application. Everything in it is added to the compilation classpath and also packaged in the final APK. There are other possible configurations to add dependencies to:

    • compile: main application
    • androidTestCompile: test application
    • debugCompile: debug Build Type
    • releaseCompile: release Build Type.

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