集成某直播SDK碰到的问题

来源:互联网 发布:手机消音软件 编辑:程序博客网 时间:2024/06/08 15:47

合作方提供的是 sdk.aar 包,本想单独建 library 项目引入,试了下发现生成的 aar 中并没有 sdk 代码,遂在主项目中通过如下代码引入项目

android{    ...    repositories {        flatDir {            dirs 'libs'        }    }}dependencies{     compile(name: 'sdk', ext: 'aar')}
  1. Manifest 合并冲突
    这里写图片描述
    sdk android:allowBackup=”false”, 主项目为 true,其他第三方库中也有为 true 的,因此不能通过只改变主项目为 false 解决冲通,只能解决冲突。错误中也有提示在 <application> 中添加 tools:replace="android:allowBackup",之前的 variant 的 title、name 也都是这么用的,但尼玛这次就跪了,还是编译不过去。官方文档过一遍,stackoverflow 过一遍,最终发现这 TM 是个 bug…<application>中还有个 tools:ignore="xxx",删除即可…半天过去了…

  2. 第三方库冲突

    okhttp、okio 等常用第三方库用的非常广泛,但你不能直接塞到 sdk 里啊,解压删除 classes.jar 中的相关类

  3. 64K

    集成后方法数超了,先直接用了 Google 官方的 MultiDex

    compile 'com.android.support:multidex:1.0.0'

    然后指定 MultiDexApplication 或者在自己的 Application 里

     @Overrideprotected void attachBaseContext(Context base) {    super.attachBaseContext(base);    MultiDex.install(this);}
  4. 还是冲突

    Picasso 2.5.2 依赖老版本的 okhttp,七牛由于历史原因使用的是 jar 包,就都全换了

    最新的 Picasso 已经不依赖 okhttp,并且通过反射优先使用 okhttp3 or urlconnection,但也没人维护了。 - -,七牛也用 okhttp3了,都换上 gradle 管理就简单多了。

    allprojects {    repositories {        jcenter()        maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }    }} compile 'com.qiniu:qiniu-android-sdk:7.2.0' compile 'com.squareup.picasso:picasso:2.6.0-SNAPSHOT'
  5. so

    sdk 里只提供了 armeabi 的 so,但是项目中使用的推送等都是全平台的,导致最终的 apk 只有 armeabi 下有直播 sdk 的 so。具体的问题可参见与 so 有关的一个长年大坑,暂时删除其他文件夹。

  6. 还是 so

    试了两个手机发现还是崩溃,因为另外一个 gradle 引用的第三方库里有各个平台的 so…还是导致了上面的问题.

    通过 gradle 的 splits 功能解决,只用单一的 so

        splits {        abi {            enable true            reset()            include 'armeabi'            universalApk false        }    }

暂时编译通过,手头的两台测试机跑过去了,一天也过去了…后面的事后面再说吧…

0 0
原创粉丝点击