安卓通过Build Variants定制多个App以及WebView访问https
1.无图无真相
切换对应的项目运行出多个APP(其实只是图标和http请求变了,其他的各位看官可自行添加)
2.首先配置app下的build.gradle文件
defaultConfig {
......//这个表示原来就有的配置,防止小白一股脑的黏贴进去
/**
* 这句很重要
* Gradle 会结合使用您定义的每个类型维度的产品类型配置以及 Build 类型配置,以创建最终的构建变体
*/
flavorDimensions "versionCode"
}
android {
......
defaultConfig {
......
/**
* 这句很重要
* Gradle 会结合使用您定义的每个类型维度的产品类型配置以及 Build 类型配置,以创建最终的构建变体
*/
flavorDimensions "versionCode"
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
/* shrinkResources true//去掉不使用的资源
signingConfig signingConfigs.release*/
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
//解决中英文同时存在时打包问题,下面这句表示把translate引起的warning屏蔽掉,不要妨碍APK的生成
disable 'MissingTranslation'
// true--所有正式版构建执行规则生成崩溃的lint检查,如果有崩溃问题将停止构建
checkReleaseBuilds false
// true--错误发生后停止gradle构建
abortOnError false
}
productFlavors {
flavorOne{
applicationId 'com.one.test'
versionCode 1
versionName "1.0.0.200526"
manifestPlaceholders = [appName : "天字一号"
]
}
flavorTwo {
applicationId 'com.two.test'
versionCode 1
versionName "1.0.0.200526"
manifestPlaceholders = [appName : "天字二号"
]
}
flavorThree {
applicationId 'com.three.test'
versionCode 1
versionName "1.0.0.200526"
manifestPlaceholders = [appName : "天字三号"
]
}
}
}
3.Src目录下创建对应的文件夹
这里的三个文件夹名对应的build.gradle下的,productFlavors 里面的文件名
4.开始愉快的编写代码
在刚才创建的三个文件夹下的api的包下面分别创建Api.java类:
public class Api {
//特简单的一个类,这边你可以根据你自己的需求在这里面加上三个APP共有的东西。
public static final String TextUrl="https://www.163.com/";
}
然后编写MainActivity类(xml布局就一个WebView就不贴出来了):
public class MainActivity extends AppCompatActivity {
private WebView webView;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);//支持javascript自定义对象
//WebView是可以在一个安全的站点(Https)里加载非安全的站点内容(Http)
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
//解决webView无法访问https地址
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();//忽略SSL证书错误,继续加载页面
}
}
);
webView.loadUrl(Api.TextUrl);//这里的这个Api就是上一步三个文件夹里面的内容
}
@Override
protected void onDestroy() {
super.onDestroy();
// 在 Activity 销毁的时候,将 WebView 置空 防止内存泄漏
if (webView != null) {
webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
webView.clearHistory();
((ViewGroup) webView.getParent()).removeView(webView);
webView.destroy();
webView = null;
}
}
}
有问题可以一起探讨 QQ 2872960735
5.完结撒花
创作不易,欢迎一键三连(评论,点赞,关注)