美文网首页
合并已有Android项目到Cordova项目

合并已有Android项目到Cordova项目

作者: 淡蓝色梦想 | 来源:发表于2018-12-11 18:30 被阅读0次

基本流程

  1. 引入各Module:除主入口app模块外,其他模块通过Android Studio的引入功能引入。
  2. 修复aar引用错误[可选]:针对在多个项目中使用的aar,需要再最外层build.gradle中加入如下代码:
allprojects {
    repositories {
        maven {
            url "https://maven.google.com"
        }
        jcenter()
        //主要是此处
        flatDir {
            dirs '../commonsdk/libs'; //commonsdk换成你的Module名称
        }
    }   
}
  1. 添加编译变量[可选]:大部分项目会在最外层定义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'
}
  1. 合并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作为遮罩

主要有三步

  1. 创建遮罩底层内容:在CordovaActivity中创建UI组件
protected void init() {
        //TODO 此处创建被遮罩的内容
        appView = makeWebView();
        createViews();        
  1. 修改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));
  1. 设置背景透明:在需要Cordova WebView透明的是否,设置其背景色为透明的:
appView.getView().setBackgroundColor(0);

其实也可以默认设置背景为透明的,在HTML中设置Body的背景色来进行透明控制。

后续探索

  • 独立使用Cordova优化的WebView

相关文章

网友评论

      本文标题:合并已有Android项目到Cordova项目

      本文链接:https://www.haomeiwen.com/subject/uavehqtx.html