基本流程
- 引入各Module:除主入口app模块外,其他模块通过Android Studio的引入功能引入。
- 修复aar引用错误[可选]:针对在多个项目中使用的aar,需要再最外层build.gradle中加入如下代码:
allprojects {
repositories {
maven {
url "https://maven.google.com"
}
jcenter()
//主要是此处
flatDir {
dirs '../commonsdk/libs'; //commonsdk换成你的Module名称
}
}
}
- 添加编译变量[可选]:大部分项目会在最外层定义API版本等信息,如需要,则加入
ext {
is_debug = false
versionCode = 4807
versionName = "4.8.0.7"
applicationId = "com.XXX.XXX"
compileSdkVersion = 26
buildToolsVersion = '26.0.2'
minSdkVersion = 14
targetSdkVersion = 22
lib_appcompat = 'com.android.support:appcompat-v7:23.1.1'
lib_design = 'com.android.support:design:23.1.1'
lib_gson = 'com.google.code.gson:gson:2.8.0'
}
- 合并app模块
4.1 拷贝JAVA代码
4.2 合并Android资源:res文件夹下相关的内容
4.3 合并AndroidManifest.xml:如需要修改主入口,请修改Activity的intent-filter:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
4.4 修复资源冲突:为防止app与依赖的模块中的资源冲突,在application标签中添加如下属性:
tools:replace="android:icon"
4.5 修改跳转逻辑:将Cordova的Activity作为跳转逻辑的一环,在合适的时机跳入该页面
startActivity(new Intent(this, MainActivity.class));
使用Cordova的WebView作为遮罩
主要有三步
- 创建遮罩底层内容:在CordovaActivity中创建UI组件
protected void init() {
//TODO 此处创建被遮罩的内容
appView = makeWebView();
createViews();
- 修改WebView加入CordovaActivity的方式
//Suppressing warnings in AndroidStudio
@SuppressWarnings({"deprecation", "ResourceType"})
protected void createViews() {
//Why are we setting a constant as the ID? This should be investigated
appView.getView().setId(100);
appView.getView().setLayoutParams(new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
\\此处修改setContentView为addContentView,使其不独占Activity
addContentView(appView.getView(), new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
- 设置背景透明:在需要Cordova WebView透明的是否,设置其背景色为透明的:
appView.getView().setBackgroundColor(0);
其实也可以默认设置背景为透明的,在HTML中设置Body的背景色来进行透明控制。
后续探索
- 独立使用Cordova优化的WebView