1.一个SDK给我干懵逼了?大厂的码丢SDK就这? Netty 版本的跃迁史
2.最近下载android4.3的源代码,可是找不到kernel那部分代码在什么目录下?
3.ijkPlayer SDK 源码导入到Android Studio中各种问题解决 第二篇
一个SDK给我干懵逼了?大厂的SDK就这? Netty 版本的跃迁史
在日常开发中,我遇到过一件让我有些困惑的码丢事情。那天,码丢我在专注地编写 Bug 的码丢时候,一位同事突然来找我,码丢带来了一个非常特别的码丢arcgiswebgis源码三方依赖库的 jar 包。这个 jar 包里包含了一些 Netty 的码丢依赖,但问题是码丢:无法确定具体是哪个版本的 Netty。我被这个“惊喜”搞得有点懵。码丢
于是码丢,我接过同事递过来的码丢 jar 包,首先对它进行了解压。码丢这个 jar 包的码丢目录结构看起来与我所熟悉的某宝、某钉的码丢企业e盾源码 SDK 并不相同,没有常规的码丢 pom 文件或 gradle 文件。我感到有些不解,这些信息通常会明确指出依赖库的版本,但在这里却找不到踪迹。
我开始怀疑,这可能是个不按套路出牌的黑科技。我反复检查了这个 jar 包的目录,却始终找不到依赖库的坐标声明文件。这时,同事催促着要我帮忙解决问题,我只好暂时放下这个疑问,先试着通过版本试用的方法来确定这个 jar 包中 Netty 的具体版本。
在查看这个 jar 包中的驾考html源码文件时,我发现其中包含了大量的 org.jboss.netty 依赖。我决定通过 mvnrepository.com 这个网站来搜索相关信息。输入 netty 关键字后,我发现搜索结果的前面大多数是 io.netty 的信息,直到第 7 个才出现了 org.jboss.netty 的信息。我进一步点击进入,发现提供的版本主要集中在 Netty3.0.x、3.1.x、3.2.x 系列。
根据常识,项目中引用 Netty 通常都会选择最终稳定版本,因此我尝试在 jar 包的源文件中添加了一个 pom 文件,并使用 3.2..Final 这个版本进行测试。网站自动交易源码然而,在编译源代码时,我发现缺少了 org.jboss.netty.handler.codec. 页面中的一段说明引起了我的注意:“Note: This artifact was moved to: io.netty » netty”。这表明 org.jboss.netty 已经迁移到了 io.netty,于是我点击了提供的链接。
在新的页面中,我找到了归档的从 3.3.x 到 3..x 以及 4.0.x 的 Netty 版本。我尝试使用 3..6.Final 进行测试,发现所有的 import 没有问题,但部分类的方法缺失。我意识到这可能是版本接近且相对正确的版本,于是选择了与它最为接近的次新版本 3.9.9.Final 进行测试。结果显示,新的源码论坛完全没有任何问题,缺失的方法正是在 3..6.Final 中被标记删除的。
至此,我基本可以确定 3.9.9.Final 版本是 jar 包依赖的 Netty 版本。这个发现让我意识到,虽然依赖坐标中的 groupId 是 io.netty,但在实际的包路径中,版本从 3.3.x 到 3..x 之间是 org.jboss.netty.xxx。这个知识的获取让我对依赖库的结构有了更深入的了解。
此外,mvnrepository.com 页面上还有一段说明指出:“Note: This artifact was moved to: io.netty » netty-all”,表明 io.netty 已经迁移到了 io.netty » all。我进一步查询 netty 官网,发现归档的版本从 4.0.x、4.1.x 到最新的 5.0.x。
通过对比确认,我发现在 3.2.x 及其之前的版本中,netty 的 groupId 是 org.jboss.netty,artifactId 是 netty,包路径是 org.jboss.netty;在 3.3.x 到 3..x 版本中,groupId 变为 io.netty,artifactId 依然为 netty,包路径是 org.jboss.netty;而在 4.0.0.Final 及之后的版本中,groupId 依然是 io.netty,但 artifactId 变为 netty-all,包路径变成了 io.netty。
根据这些信息,我最终确定 3.9.9.Final 版本是 jar 包依赖的 Netty 版本。随后,我将同事提供的 jar 包及其对应的源代码以及我添加的 pom 文件信息整合,快速打包并发送给了他。他测试后反馈,一切运行正常。
这次经历不仅解决了问题,也让我对依赖库的版本迁徙和结构有了更深刻的理解。同时,我意识到这种无明确依赖坐标信息的 jar 包可能存在的问题与弊端,包括可能的版本兼容性问题、依赖库结构混乱导致的查找困难等。最终,我完成了这次给无依赖坐标信息的三方类库项目确定 Netty 依赖版本的旅程,也回答了文章开始时提出的问题:这类 jar 包是如何生成的,为什么会存在,以及它可能带来的问题。
最近下载android4.3的源代码,可是找不到kernel那部分代码在什么目录下?
你从哪里怎么下载的?
注意android4.3有两种源代码:
android_sdk中附带的android API源代码
和android系统源代码(这个源代码超级巨大,目前已知最可靠的方案是使用linux从Google服务器用特殊软件下载源代码……)
ijkPlayer SDK 源码导入到Android Studio中各种问题解决 第二篇
在将ijkPlayer SDK导入Android Studio并进行编译过程中,我遇到了多个问题。这些问题在前篇博客《ijkPlayer SDK 源码导入Android Studio中各种问题解决 第一篇》中已经部分探讨过,zinyan.com。问题与解决
问题一:Flavors错误
在代码无误的情况下,运行时出现Flavors错误。原因在于ijkplayer项目的build.gradle版本过低,需添加一个维度名称到flavorDimensions。只需定义任意维度名即可解决问题。问题二:exoplayer库缺失
找不到com.google.android.exoplayer:exoplayer:r1.5.,可能由于网络问题或仓库不稳定。在ijkplayer-exo模块的build.gradle中,将依赖库切换至国内镜像如阿里云,添加相应配置后重新build即可。问题三:UnsatisfiedLinkError
编译后的apk在运行视频时崩溃,原因是找不到本地的libijkffmpeg.so。检查发现项目中未包含so文件,需将本地依赖改为远程依赖或自行编译导入。问题四:NDK版本不匹配
依赖的NDK版本与要求版本不一致,只需在Android Studio的SDK管理面板中下载.0.版本的NDK并安装,下载速度受网络影响。 成功解决了这些问题后,ijkplayer-example项目可以运行,但so库仍需进一步处理。后续将有更多关于so库编译的内容,敬请关注。