Android Studio 编译 UVCCamera

准备工作

所用软件

  • Windows 11 / Ubuntu 20.04
  • Android Studio 2020.3.1(当时的最新版)
  • NDK 17.2.4988734
  • Target SDK 27
  • Compile SDK 29.0.3
  • JDK 1.8
  • Gradle 7.2

所用硬件

检查手机是否支持UVC

找到Android的SDK安装位置,并找到 platform-tools\adb.exe 工具,在Windows Powershell终端中依次输入如下命令:

.\adb.exe shell
cd sys/bus/usb/drivers
ls

查看输出,如果输出中有uvcvideo则表示手机支持UVC摄像头。
在这里插入图片描述

代码下载

项目地址下载源码。

项目设置

SDK国内源

将HTTP Proxy修改为 Auto-detect proxy settings,勾选 Automatic proxy configuration URL,并填入国内源地址,这里是

mirrors.dormforce.net:80

在这里插入图片描述
在Android SDK设置页面,勾选 Force https://… sources to fetched using http://
在这里插入图片描述

gradle 国内源

在 C:\Users\38325.gradle 文件夹下创建 init.gradle 文件。
在这里插入图片描述
输入如下内容:

allprojects{
    repositories {
        def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public'
        def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
        all { ArtifactRepository repo ->
            if (repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
                    remove repo
                }
                if (url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
                    remove repo
                }
            }
        }
        maven {
            url ALIYUN_REPOSITORY_URL
            url ALIYUN_JCENTER_URL
        }
    }
}

如果项目层的build.gradle文件内容如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.1'
        
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

将其修改如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.1'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'http://raw.github.com/saki4510t/libcommon/master/repository/' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

NDK设置

在local.properties文件中添加ndk.dir变量,将其赋值为ndk路径,这里使用的是r17版本。
在这里插入图片描述

程序运行

错误处理

ndk-build.cmd’’ finished with non-zero exit value 2

较新版本的ndk不支持原来的ABI,需要将 libuvccamera\src\main\jni\Application.mk 文件中的 APP_ABI改为

APP_ABI := arm64-v8a armeabi-v7a

Failed to resolve: com.serenegiant:common

添加依赖项,使用BaseActivity提示错误,造成这个原因是lib依赖中使用的implementation依赖在其他包中是不对外开放的,改成api方式依赖即可。
即把 libuvccamera 和 usbCameraCommon 中的 build.gradle文件下的

implementation("com.serenegiant:common:${commonLibVersion}") {
		exclude module: 'support-v4'
}

修改为

api("com.serenegiant:common:${commonLibVersion}") {
		exclude module: 'support-v4'
}

ERROR: Failed to resolve: com.serenegiant:common:2.12.4

duplicate class

删除aar包中某些文件再打包成aar

Build Output 栏内汉字出现乱码

Android Studio Build Output 栏内汉字出现乱码的解决方案

WiFi 连接手机

Android Quick Tip - ADB over WiFi

闪退问题修复

Android UVC Camera 闪退问题修复

解决Android UVCCamera stopPreview 报错 崩溃 闪退 问题

参考链接

Android Studio SDK 使用国内镜像源在线安装
这可能是介绍 Android UvcCamera 最详细的文章了
android设备外接多个usb摄像头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值