从小白的角度浅谈Hbuilder项目引入Android studio,实现混合开发

前言:最近公司要在H5项目中调用七牛云SDK,但是根据H5项目人员了解到好像用H5来做视频聊天不是很好友,于是经理决定在原生上面去实现视频聊天这块功能。说实话之前一直没接触过混合开发,在此之前在网上查阅了一些资料,看了下大致流程及H5与原生交互。总体来说难度不是很大,当然对于我这种第一次接触的小白也是一种挑战,于是乎在这里记录下大致流程:

1.H5打包资源文件

2.将H5项目引入到android  studio 

 

  •    下载5+sdk:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android 下载完成后将这三个包添加到android  studio  的libs目录下。
  •   android  studio中配置builde.gradle:
    implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'])
    implementation 'com.github.bumptech.glide:glide:4.11.0' // 基座依赖
  • 新建assets目录:assets目录与res,java同级,然后在assets目录下新建apps和data两个文件(如果有疑问就参考上面的链接步骤来)在apps文件下放入H5打包好的资源文件。然后在data文件下放入这个三个xml文件,其中dcloud_control中这个appid请改成H5项目中的AppID.到此assets目录下的结构大致如此:
  • 配置AndroidManifest文件:首先在application节点下面添加两个activity
    <activity
        android:name="io.dcloud.PandoraEntry"
        android:configChanges="orientation|keyboardHidden|keyboard|navigation"
        android:hardwareAccelerated="true"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:screenOrientation="user"
        android:theme="@style/TranslucentTheme"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="io.dcloud.PandoraEntryActivity"
        android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard"
        android:hardwareAccelerated="true"
        android:launchMode="singleTask"
        android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"
        android:screenOrientation="user"
        android:theme="@style/DCloudTheme"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
    
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="h56131bcf" />
        </intent-filter>
    </activity>                          这两个activity是固定的,不用修改。然后修改下application中的应用图标以及应用名称。(aplication中启动activity一定要与上面一致)
  • 运行app,基本上跟H5差不多效果。最后:如果我们需要自定义application请一定继承:
    DCloudApplication,创建android原生项目请一定创建java。因为5+sdk目前不支持kotlin项目.
    

3.H5与android页面跳转以及传参

  •      这里就说下H5跳转到android原生页面及传参: 

//获取宿主上下文

var main = plus.android.runtimeMainActivity();

//通过反射获取Android的Intent对象

var Intent = plus.android.importClass("android.content.Intent");

//通过宿主上下文创建

intent var intent = new Intent(main.getIntent());

//设置要开启的Activity包类路径

intent.setClassName(main, "com.example.yidoctor.QNViodeActivity");

//开启新的任务栈 (跨进程)

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

//向原生界面传值操作

intent.putExtra("topicId","value");

intent.putExtra("patientId","value");

intent.putExtra("doctorId","value");

intent.putExtra("roomtoken","value");

//开启新的界面

main.startActivity(intent);

最后安装APK记得加上

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /

权限

如果加了混淆运行的时候提示那么在混淆文件中加上

-keep public class * extends io.dcloud.common.DHInterface.BaseFeature
-keep public class * implements io.dcloud.common.DHInterface.IFeature

 

总结:到此为止H5项目引入android原生以及简单交互就差不多了.如果你还有其他需求可自行参考其他资料。本人也是第一次接触混合开发,如果文章中有不对或者不全的地方欢迎大家指出,如果文章有帮助到你,请动动你的小手指点个赞支持下.蟹蟹!!!

更新时间:2020-7-23


版权声明:本文为ZyClient原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。