问题陈述:
我只想在开发环境上使用库,而不要在发行版(应用程序商店发行版)上使用库。
而且我也不希望该库也内置在发行版apk中。
我的视野:
所以,我有一个这样的环境设置:
发展-
店铺-
在gradle中我添加了-
debugCompile 'com.some.library'
加载该库以进行开发-调试和存储-调试
然后我创建了两个Application类,
我已经在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/