【问题标题】:Android flavors with different dependencies and same class file具有不同依赖项和相同类文件的 Android 风格
【发布时间】:2016-01-26 21:00:39
【问题描述】:

我的 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上搜索了很长时间,但没有找到任何答案,所以几年来我第一次决定注册并提出问题。

【问题讨论】:

    标签: android gradle android-gradle-plugin android-productflavors android-proguard


    【解决方案1】:

    Lite 版本未编译,因为 java 找不到 LockPatternActivity。对于那件事,您可以使用以下解决方案。

    你需要有一个风味类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()

    每种风味都将使用它的助手,lite 版本不会包含不必要的库。

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 1970-01-01
      • 2011-02-15
      • 2015-09-10
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多