我正在尝试使用产品风格实现robobinding,但是在源代码目录下的自定义代码类永远不会被执行。
有没有人尝试过类似这个用例的东西?即使用某种元素粘合剂,然后实施产品口味?
在某个演示项目中,我有以下结构:
-app/src/main/java/demo.app.pkg/MainActivity.java
-app/src/free/java/demo.app.pkg.free/MainActivity.java
build.gradle
:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
free {
applicationId "demo.app.pkg.free"
}
paid {
applicationId "demo.app.pkg.paid"
}
}
当MainActivity.java
类被修改后出现在free
flavor下时,它会在构建free
flavor的调试/发布时打包。并且执行时也包含自定义代码。
(旁边注意:有人说为了实现具有单个类的不同版本的产品风格,需要有一个包含公共代码的main
的src文件夹(但不是具有相同类的类)名称存在于风味的src文件夹中)和其他2个src文件夹,这些文件夹具有相同名称的类等,这些文件将基本上隔离这两种风格。
这不是'我在上面尝试的示例项目的情况下^它完美无缺;即使我在main
src文件夹下有相同的命名类。)
现在,问题在于我尝试在已实施robobinding的项目中实现类似的产品风格(如上所示)。 结构如下:
-app/src/main/java/demo.app.pkg/MainActivity.java
-app/src/main/java/demo.app.pkg/MainActivityPresentationalModel.java (class to be replaced by class present under 'free' flavor)
-app/src/main/java/demo.app.pkg/Pojo.java
-app/src/free/java/demo.app.pkg.free/MainActivityPresentationalModel.java
这件事不起作用。只有MainActivityPresentationalModel.java
下的课程main
才会被执行。
现在,如果有人使用view binders
特别是robobinding或SDK's binders
(仍处于测试阶段),他们必须意识到我们可以访问表示模型,这本质上是逻辑,我们有setter / getters获取/放置值,以便它们在运行时在UI上得到更新,因此我的动机是让这个类具有产品风格。
非常感谢任何帮助。
参考:
对于第一个示例项目,请查看' Build-It-Bigger'项目在gitHub。