0

拥有一个具有几种不同构建类型的 android 应用程序:release, debug, amazon, facebook. 和风味:staging, prod 和构建变体是:

stagingRelease, stagingDebug, stagingAmazon, stagingFacebook,

prodRelease, prodDebug, prodAmazon, prodFacebook,

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        debug {
            debuggable true
        }

        amazon {
            debuggable true
        }

        facebook {
            debuggable true
        }
    }
}
flavorDimensions "dimens"

    productFlavors{
        stage {
            dimension "dimens"
        }

        prod {
            dimension "dimens"
        }
    }

还具有一个 optionalClass 接口,该接口具有仅用于暂存构建的真实代码实现,以及它的存根版本用于生产构建。

public interface OptionalVerifies {
    @Nullable
    void doVerify(Context context);
}

// the one for staging builds (having real code implementation)
import com.facebook.stetho.okhttp3.StethoInterceptor;
public OptionalVerifiesImpl implements OptionalVerifies {
    private Interceptor stethoInterceptor = null;
    @Override
    public void doVerify(Context context) {
        // code to do verify
        ... ...
    }
}

// the one for prod (has empty function implementation)
public OptionalVerifiesImpl implements OptionalVerifies {
    @Override
    public void doVerify(Context context) {//stub only, do nothing}
}

有一个 main\src\java\ someClass.java(将用于所有变体构建),它将具有调用定义在OptionalVerifies

class someClass {

   public void function {
      ...
      OptionalVerifies verifyObj = new OptionalVerifiesImpl();

      // which is ether a real function implementation or just a stub, that is depend on whether it is in prod or stage variant build 
      verifyObj.doVerify(context); 
      ...
   }
}

项目文件夹是:

app
  \src
    \main 
      \res
      \java\com\pk
                  \other classes ...
                  \someClass.java
                  \OptionalVerifies.java
    \amazon
      \res
    \facebook
      \res
    \debug
      \res
    \release
      \res
  

所以构建类型共享的公共代码:release, debug, amazon, facebook在文件夹中app/src/main/

现在,因为有一个OptionalVerifiesImpl.java在用于暂存变体构建中具有真实代码doVerify(Context context),而另一个OptionalVerifiesImpl.java只是存根,没有实现doVerify(Context context)用于在 prod 变体构建中使用。

所以问题是:

OptionalVerifiesImpl.java真正的实现应该放在哪里/哪个文件夹中?以及存根OptionalVerifiesImpl.java应该放在哪里,以便在制作阶段变体时构建OptionalVerifiesImpl.java带有代码实现的代码实现,而当制作产品变体构建存根时,OptionalVerifiesImpl.java将构建其中的一个?

4

0 回答 0