IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> HbuilderX打包三方SDK日记(安卓) -> 正文阅读

[移动开发]HbuilderX打包三方SDK日记(安卓)

? ? ? 之前做了流媒体服务器,想用HbuilderX开发个APP,做直播推流,HB提供的插件LivePusher功能少了点,所以想到了FFMPEG。在这里打包的就是mobile-ffmpeg4.4版本。下面是工具传送门:

1.mobile-ffmpeg4.4的releases版本,用的是mini版aar文件,因为HB的云打包限制是40M。

2.android-studio-2020.3.1.22-windows.exe,采坑:低于这个版本构建的时候会报错,而且在新建moudle的时候无法创建,稍后还有不少坑,一个一个过。

3.HbuliderX,下个最新版本,没坑,简单。

4.HB的工程包(安卓的),里面有示例工程和SDK

准备工作做好了---------------------------------------------------------------------------------------------

一、android studio的工作

1.import Project

也就是我们上面准备的第四个

2. 然后将下载的 FFMPEG的aar文件放入到:

app/libs下面

?采坑:如果你没有看到 libs目录,需要以下操作:

?3.创建新的moudle工程

?4.修改新建工程下的build.gradle

?原文如下:

plugins {
    id 'com.android.library'
}

android {
    compileSdk 30

    defaultConfig {
        minSdk 16
        targetSdk 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'com.android.support:appcompat-v7:28.0.0'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

修改为:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 29
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compileOnly fileTree(dir: 'libs', include: ['*.jar'])

    compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar'])
    compileOnly fileTree(dir: '../app/libs', include: ['mobile-ffmpeg-min-4.4.LTS.aar'])

    compileOnly "com.android.support:recyclerview-v7:28.0.0"
    compileOnly "com.android.support:support-v4:28.0.0"
    compileOnly "com.android.support:appcompat-v7:28.0.0"
    implementation 'com.alibaba:fastjson:1.1.46.android'
    implementation 'com.facebook.fresco:fresco:1.13.0'
}

其实两个配置文件的主要差异就在dependencies?这里,HB要使用compileOnly?的方式引用三方包

配置文件编写完了sync?同步下。这样接下来创建CLASS文件的引用就都有了,否则引用不到的。

5.?创建UniMoudle文件

相关FFMPEG的执行命令,在GITHUB上的DOC里都有,可以自行翻阅。?

package com.muearfm.hbffmpeg44min;

import com.arthenica.mobileffmpeg.ExecuteCallback;
import com.arthenica.mobileffmpeg.FFmpeg;

import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;

public class HBffmpeg44minModule  extends UniModule {
    //全局变量 执行ID
    public long executionId = 0;

    //同步执行
    @UniJSMethod(uiThread = true)
    public void FFexecute(String command, UniJSCallback callback) {
        if(callback != null) {
            //执行ffmpeg的命令行
            int backdata = FFmpeg.execute(command);
            //0 on successful execution, 255 on user cancel
            callback.invoke(backdata);
        }
    }
    //同步取消
    @UniJSMethod(uiThread = true)
    public void FFcancel() {
        FFmpeg.cancel();
    }
    //异步执行
    @UniJSMethod(uiThread = true)
    public void FFexecuteAsync(String command, UniJSCallback callback, ExecuteCallback executeCallback) {
        if(callback != null) {
            //执行ffmpeg的命令行
            executionId = FFmpeg.executeAsync(command,executeCallback);
            //0 on successful execution, 255 on user cancel
            callback.invoke(executionId);
        }
    }
    //异步取消
    @UniJSMethod(uiThread = true)
    public void FFcancel(long executionId) {
        FFmpeg.cancel(executionId);
    }
}

?6.修改dcloud_uniplugins.json文件,将插件加入,路径app/src/main/assets

?

?name我是按照HB官方的命名要求写的,怕到时候引用错误。

{
      "plugins": [
        {
          "type": "module",
          "name": "muearfm-HBffmpeg44Modulemin",
          "class": "com.muearfm.hbffmpeg44.HBffmpeg44minModule"
        }
      ]
    }

7.打包aar

过坑A:Gradle的控制台找不到,在下图里

对,就是左下角那个小方块。点击就出现了

过坑B:看不到task里的内容的时候,在设置里?关闭不编译

?

?

?现在可以?双击assemble进行编译了。

?8.组织HB所需要的插件包(只配置了安卓)

第一层:是主目录,一般用来标记版本号

第二层:插件名称,不加版本号

第三层:包涵android目录、IOS目录和package.json?

?第四层:android目录包涵libs和刚才生成的aar

第五层:libs目录包涵项目要引用的三方SDK

?

文件目录配置完了,放入文件,开始编辑package.json

{
	"name": "mobileffmpeg44min",
	"id": "muearfm-HBffmpeg44minModule",
	"version": "1.0.0",
	"description": "移动端FFMPEG4.4min同步",
	"_dp_type":"nativeplugin",
	"_dp_nativeplugin":{

		"android": {
			"plugins": [
				{
					"type": "module",
					"name": "muearfm-HBffmpeg44minModule",
					"class": "com.muearfm.hbffmpeg44min.HBffmpeg44minModule"
				}
			],
			"integrateType": "aar",
			"minSdkVersion" : 16
		}
	}
}

?选填参数没有,就不写。IOS没有也不写。参数说明参考官网

9.用HB加载插件

?10.打包自定义基座(HB)

打包基座不超过40M,否则要本地打包,挺麻烦的。今天先写到这,我还没试好不好用。。。

略略略略略略略略略略略略......试验好了再写,

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:31:59  更:2021-08-11 12:34:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 5:30:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码