我有两种不同风格的Android应用,精简版和专业版。在应用程序中,我有一个名为 customFragment.java 的类,它包含在main中(在flavor之间没有区别)并且还包括以下代码:
import haibison.android.lockpattern.LockPatternActivity;
private void showLockPattern() {
if (BuildConfig.IS_VERSION_PRO) {
Intent intent = new Intent(LockPatternActivity.ACTION_VERIFY_CAPTCHA, null, this, LockPatternActivity.class);
startActivityForResult(intent, PATTERN_ID);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PATTERN_ID && resultCode == Activity.RESULT_OK) {
Log.i("App", "OK!");
}
}
在app.gradle中,我只为专业版包含了LockPattern库:
dependencies {
proCompile 'com.github.haibison:android-lockpattern:6.0.0'
}
我描述的类对于这两种风格都是相同的(因此在主文件夹中),因为它非常大并且我不想在两种风格中复制代码。 pro 风格成功构建,但 lite 风格显示错误,因为我也不导入 lite 风格的依赖项。
我看到的一个解决方案是将lockpattern库添加到两种风格中,然后使用proGuard从 lite 风格中删除它。虽然我相信这可行,但它可能不是最顺畅的选择。当然,我也可以简单地忽略 lite 风格中未使用的库的开销。
你会如何解决这个问题?我已经搜索了stackoverflow很长一段时间但没有找到任何答案,所以几年来我第一次决定注册并提出问题。
答案 0 :(得分:1)
Lite版本没有编译,因为java无法找到LockPatternActivity。为此,您可以使用以下解决方案。
你需要有一个风格专业
的课程public final class LockPatternHelper {
private LockPatternHelper() {}
public static void showLockPattern() {
Intent intent = new Intent(LockPatternActivity.ACTION_VERIFY_CAPTCHA, null, this, LockPatternActivity.class);
startActivityForResult(intent, PATTERN_ID);
}
}
在flavor lite 中,它应该是与空方法 showLockPattern()相同的类。
public final class LockPatternHelper {
private LockPatternHelper() {}
public static void showLockPattern() {}
}
在此之后,您可以从 customFragment.java
中调用 LockPatternHelper.showLockPattern()每种口味都会使用它的助手,精简版版本不会包含不必要的库。