添加海外oversea和海内china两个渠道
1 设置build.gradle
flavorDimensions "default"
productFlavors {
china {
applicationId "com.cheezgroup.tosharing.myapplication"
minSdkVersion 17
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
dimension "default"
}
oversea {
applicationId "com.cheezgroup.tosharing.myapplication.oversea"
minSdkVersion 17
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
dimension "default"
}
}
2 复制两个main文件夹(包括它的子文件夹),分别更名为china,oversea(必须和上面的productFlavors保持一致)
3 公共代码写在main目录下,例如MainActivity,而且china和oversea不能再有这个类
4 china创建一个ChinaTestActivity类,则需要在oversea中创建一个空引用 throw new RuntimeException();否则将找不到类,其他方法变量类推,最后在china下的manifest文件里面声明该类
public class ChinaTestActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_china_test);
}
}
public class ChinaTestActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
throw new RuntimeException();
}
}
5 现在已经可以不同的渠道引用不同的java类和values了,最后引用不同的dependencies,例如china下引用LeakCanary包,在build.gradle添加以下
chinaApi 'com.squareup.leakcanary:leakcanary-android:1.5.1'
6 可能不会自动提示 手动在china 包下的Java类中添加import和调用的方法
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import com.squareup.leakcanary.LeakCanary; // TODO 可能不会自动提示,手动添加
/**
* @author zhengyongbo
* @since 2019-07-08 15:45
*/
public class ChinaTestActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LeakCanary.install(getApplication()); // TODO 可能不会自动提示,手动添加
setContentView(R.layout.activity_china_test);
}
}
网友评论