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

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

1.H5打包资源文件

  •   在H5项目中找到manifest.json配置文件,在对应的基础配置里面有个AppID,这个Id非常重要。后面引入到android  studio 中要用到
  • 注册账号:H5打包貌似都要先去Dcloud官网注册一个账号 DAccount Service
  • 最后一步:打包资源文件,打包资源文件,打包资源文件切记是打包资源文件然后选择生成本地打包app资源

2.将H5项目引入到android  studio 

  •     下载5+sdk:开发环境 | uni小程序SDK 下载完成后将这三个包添加到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+sdk这种方式集成到android studio项目中,在官网文档中这种方式是不支持开启混淆的,因此如果发现按照上面的方式开启混淆后还是有各种问题的可以放弃混淆了。另外在html中跳转到原生页面的代码中intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);开启新的任务栈这个是必不可少的不然很可能导致页面不跳转。

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

更新时间:2023-11-27

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在Android Studio中调试混合开发项目,需要遵循以下步骤: 1. 在Android Studio打开项目。 2. 在项目打开native代码,例如:C++源文件或头文件。 3. 在Gradle脚本中添加对NDK的支持。在build.gradle文件中添加以下代码: ``` android { ... defaultConfig { ... ndk { moduleName "your_module_name" cFlags "-std=c++11 -fexceptions" ldLibs "log" } } ... } ``` 其中,`your_module_name`是你的C++模块名称,`-std=c++11 -fexceptions`是C++11标准和异常处理的选项,`log`是Android系统日志库。 4. 在Android Studio中设置NDK路径。选择File -> Project Structure -> SDK Location,然后在Android NDK Location字段中添加NDK路径。 5. 在Android Studio中配置调试。选择Run -> Edit Configurations,然后添加一个新的配置。在General选项卡中,选择你的应用程序。在Debugger选项卡中,选择“Native”调试器。在“Debuggable Attach”字段中,输入1。 6. 在Android Studio中启动调试。选择Run -> Debug App,然后选择你的设备或模拟器。当应用程序启动时,你可以使用Android Studio的调试工具来调试native代码。 注意:Native代码必须在设备上运行,因此你需要在设备上安装NDK库才能进行调试。在Gradle脚本中添加以下代码: ``` dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.android.support:support-v4:21.0.3' compile project(':your_native_module') } ``` 其中,`your_native_module`是你的Native代码模块名称。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值