如何解决android studio,如何跨多个构建变体共享类接口的不同实现
有一个 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,facebook
位于文件夹 app/src/main/
中。
现在,因为有一个 OptionalVerifiesImpl.java
在用于暂存变体构建的 doVerify(Context context)
中有真实代码,而另一个 OptionalVerifiesImpl.java
只是存根,在 {{1} 中没有实现} 用于生产变体构建。
所以问题是:
真正实现的doVerify(Context context)
应该放在哪里/哪个文件夹中?
以及存根 OptionalVerifiesImpl.java
应放在何处,以便在制作阶段变体时构建 OptionalVerifiesImpl.java
并使用代码实现构建,而在制作 prod 变体时构建 OptionalVerifiesImpl.java
中的存根之一{1}} 将使用?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。