我的 Android 应用程序有两种不同的风格,lite Và pro。在应用程序中,我有一个名为 customFragment.java 的类,它包含在 main 中(不同风格之间没有区别)并且还包含以下代码:
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 上搜索了很长时间,但没有找到任何答案,所以几年来我第一次决定注册并提出问题。
Lite 版本未编译,因为 java 找不到 LockPatternActivity。为此,您可以使用以下解决方案。
你需要有一个 flavor 类pro
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);
}
}
hiện hữu lite 风格中,它应该是具有空方法 showLockPattern() 的同一个类。
public final class LockPatternHelper {
private LockPatternHelper() {}
public static void showLockPattern() {}
}
在此之后,您可以从您的 customFragment.java gọi LockPatternHelper.showLockPattern()
每个 flavor 都会使用它的 helper,lite 版本不会包含不必要的库。
Tôi là một lập trình viên xuất sắc, rất giỏi!