为了限制调试代码进入版本APK,我尝试使用DeBUGMyApplication子类进行调试版本,但使用发行版中的常规MyApplication类.
是否可以在DeBUG vs Release版本中使用备用Application子类?我试过了:
>在src / deBUG的根目录中定义一个AndroidManifest.xml文件,并带有< application>元件. Gradle警告我,Main清单具有X,而库具有Y,并且未使用DeBUGMyApplication.
>将应用程序子类的完全限定名称声明为可以在我的调试res文件中单独定义的资源,但< application androID:name =“ @ string / xyz” />被解释为原义软件包名称,而不是引用.
对于我的更广泛目标的一些背景:
提供一个备用Dagger模块,该模块提供一些静态的模拟Web服务响应,这些响应在发行版APK中找不到.子类化应用程序的getModuleList()方法并更改模块列表声明似乎是最好的选择.
谢谢你的帮助!
解决方法:
对于应用程序替代,我没有答案,但是我为您的更广泛的目标提出了一个解决方案:
|-- src| +-- deBUG| +-- java| +-- mypackage| +-- Modules.java| +-- MockModule.java| +-- main| +-- java| +-- mypackage| +-- MainModule.java| +-- release| +-- java| +-- mypackage| +-- Modules.java
src /调试/java/mypackage/Modules.java
public final class Modules { public static List<Object> getModules(App application) { ArrayList<Object> modules = new ArrayList<Object>(); modules.add(new MainModule(application)); modules.add(new MockModule()); return modules; }}
src /调试/java/mypackage/MockModule.java
@Module( overrIDes = true, library = true, injects = { MainActivity.class })public class MockModule { @ProvIDes MyType buildMock() { return //... }}
src /版本/java/mypackage/Modules.java
public final class Modules { public static List<Object> getModules(App application) { ArrayList<Object> modules = new ArrayList<Object>(); modules.add(new MainModule(application)); return modules; }}
src / main / java / mypackage / App.java
public class App extends Application { private ObjectGraph graph; @OverrIDe public voID onCreate() { super.onCreate(); graph = ObjectGraph.create(Modules.getModules(this).toArray()); } public voID inject(Object object) { graph.inject(object); }}
请让我知道这对你有没有用.
杰克·沃顿(Jake Wharton)在他的Android Apps with Dagger演讲中介绍了这项技术
总结以上是内存溢出为你收集整理的java-Android中用于调试构建的备用应用程序子类全部内容,希望文章能够帮你解决java-Android中用于调试构建的备用应用程序子类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)