编程语言
首页 > 编程语言> > java-Android中用于调试构建的备用应用程序子类

java-Android中用于调试构建的备用应用程序子类

作者:互联网

为了限制调试代码进入版本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演讲中介绍了这项技术

标签:dagger,android-gradle,java,android
来源: https://codeday.me/bug/20191029/1962959.html