拥有一个具有几种不同构建类型的 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
将构建其中的一个?