serial_port.so文件找不到等问题

本文解决Android项目中SO文件加载失败的问题,提供了多种配置方法,并介绍了如何处理依赖冲突及打印详细错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.串口通讯之serial_port.so文件找不到

需要答案直接看1.3的d项。

参考:java.lang.UnsatisfiedLinkError: Couldn’t load hyphenate_av from loader dalvik.system.PathClassLoader

1.1.原因是android studio导入so文件没有编译到apk里面去,所以导致UnsatisfiedLinkError异常。打开app下的build.gradle,在android的标签下加入如下代码:

android {
    ... ...

    sourceSets{
        main{
            jniLibs.srcDirs = ['libs']
        }
    }
    
    ... ...
}

1.2.但是出现编译不通过的情况,增加以下代码,同样是在android标签下;

    sourceSets.main {
        jni.srcDirs = []
    }

1.3.一共尝试了三种方案:

a,将so文件放在libs目录下,按照上面的方式在gradle中配置,测试没有报错。
方式一
b,通过其它配置,不将libs文件放在so文件也可以处理。
主要还是gradle的配置问题。
c,最初在android的defaultConfig标签下采用下面的配置,提示未找到so文件。

	ndk {
    	moduleName "serial_port"
	}
	sourceSets.main {
   		jniLibs.srcDir 'libs'
   		jni.srcDirs = []
	}

d,简化配置,也就是最终配置,将c中的配置替换一下方式(在android的defaultConfig标签下配置),so文件放在jnilibs目录下,测试,解决掉了。

	sourceSets {
      	main { jni.srcDirs = [] }
	}

2.Android Studio(Gradle)解决库依赖冲突问题

参考

3.打印详细报错信息的方法

参考:Android Studio 3.1.2 新项目报错 AAPT2 error: check logs for details (Gradle 3.1.2)

3.1.问题一:

通过命令查看日志,在最底部的上方位置提示

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to process resources, see aapt output above for details.


继续查看,根据提示,找到相关代码(读取视频资源问题导致的错误),先注释相关代码进一步排查:

Try:
Run with --debug option to get more log output. Run with --scan to get full insights.
future=com.google.common.util.concurrent.SettableFuture@102f0881}): D:\project_new_as_version\ClassCadOfPrimaryNew\app\build\intermediates\res\merged\debug\raw_school_safe.mp4.flat: error: failed to read data meta data.
AAPT1 err(Facade for 518579500): error: failed parsing overlays.

3.2.问题2:org.gradle.api.tasks.TaskExecutionException: Execution failed for task ‘:app:compileDebugJavaWithJavac’.

参考:TaskExecutionException: Execution failed for task ':app:transformJackWithJackForDebug’最权威有效的解决方案

在Android studio的Terminal中直接操作,敲入下方的命令,查看详细的错误信息:
gradlew compileDebugSources --stacktrace -info

查看,联网模块的依赖使用了implement而不是api导致主mudle中不能使用联网框架。

3.3.更改后新的错误出现:Program type already present: android.support.design.widget.CoordinatorLayout$Behavior

参考1,然没有效果。

接着搜索,参考2,同上一篇博客是一样的思路。

于是尝试将 implementation rootProject.ext.dependencies[“design”]
更改为implementation ‘com.android.support:design:28.0.0’,两者实际是一模一样的,但是通过后面一种方式,执行clean——syn——运行,项目没有报错。这如何解释,android studio玩套路啊。不管那么多了,项目赶进度,还有好多事,先执行下一个任务,继续开车。

补充内容:implementation rootProject.ext.dependencies 格式如何去掉指定的包

4.依赖图标库implementation ‘com.github.PhilJay:MPAndroidChart:v3.1.0-alpha’

运行报错:More than one file was found with OS independent path ‘META-INF/proguard/androidx-annotations.pro’,
百度先,解决方案:在defaultConfig下增加packagingOptions,过滤掉提示重复的文件。

packagingOptions {
       exclude 'META-INF/proguard/androidx-annotations.pro'
}

运行继续报错:Error:Execution failed for task ‘:app:clean’.

接着:重启as,clean-运行。正常运行,哈哈,车没有翻,nice哦。

5.项目没有报错但项目报红叉

Android Studio 项目报红叉无法运行的几种解决办法总结
参考第四种情况,问题得到处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值