关于多渠道打包(自己实践的)

添加海外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);

    }
}

你可能感兴趣的:(关于多渠道打包(自己实践的))