serial_port.so文件找不到等问题

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中配置,测试没有报错。
serial_port.so文件找不到等问题
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.
[email protected]}): 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 项目报红叉无法运行的几种解决办法总结
参考第四种情况,问题得到处理。