问题陈述: 我想仅在开发环境中使用库,而不是在发布(app store release)上使用。 而且我也不希望该库也可以在apk版本中构建。
我的appraoch:
所以,我有一个像这样的环境设置:
发展 -
商店 -
在gradle中我添加了 -
debugCompile 'com.some.library'
为开发 - 调试和存储 - 调试
加载此库然后我创建了两个Application类,
我已经在gradle中定义了为不同的风格加载不同的应用程序文件。
productFlavors {
Development {
applicationId "xyzzzz"
manifestPlaceholders = [application:"com.xyz.ApplicationWithDebugLibrary"]
}
store {
applicationId "11111"
manifestPlaceholders = [application:"com.xyz.ApplicationWithoutDebugLibrary"]
}
}
在清单中我写了这个:
<application
android:name="${application}"...
所以,对于Debug它工作正常,但是当我构建Store-Release / Development-Release apk时,它无法编译ApplicationWithDebugLibrary.java,因为我正在使用库,而不是在gradle文件中编译用于发布味道。
那么,有没有什么方法可以避免为Store发布版本加载这个类,或者我只能在开发环境中加载该库的任何替代解决方案。
答案 0 :(得分:2)
所以对于Debug来说它运行正常,但是当我构建Store-Release / Development-Release apk时,它无法编译ApplicationWithDebugLibrary.java,因为我使用的是库,它不是在gradle文件中编译的,用于发布版本
通过逻辑,没有办法神奇地删除你的代码使用的库,并且仍然可以正确编译所有剩余的代码,因为它们只是缺少符号。所以你必须创造&#34;虚拟&#34;库,与您的调试API具有相同的API,但没有方法体。或者,您可以使用一些代码包装您的lib,这些代码稍后可以与不使用库依赖项的版本交换生产。
Android Gradle插件可以帮助构建不同版本的依赖项,具体取决于构建类型:
编译配置用于编译主应用程序。 其中的所有内容都会添加到编译类路径中 打包在最终的APK中。还有其他可能的配置 将依赖项添加到:
- 编译:主要应用程序
- androidTestCompile:测试应用程序
- debugCompile:debug Build Type
- releaseCompile:发布Build Type。