gpt4 book ai didi

具有不同依赖项和相同类文件的 Android 风格

转载 作者:行者123 更新时间:2023-11-29 01:27:08 24 4
gpt4 key购买 nike

我的 Android 应用程序有两种不同的风格,litepro。在应用程序中,我有一个名为 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);
}
}

lite 风格中,它应该是具有空方法 showLockPattern() 的同一个类。

public final class LockPatternHelper {
private LockPatternHelper() {}

public static void showLockPattern() {}
}

在此之后,您可以从您的 customFragment.java 调用 LockPatternHelper.showLockPattern()

每个 flavor 都会使用它的 helper,lite 版本不会包含不必要的库。

关于具有不同依赖项和相同类文件的 Android 风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com