集成某直播SDK碰到的问题

合作方提供的是 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 里

     @Override
    protected 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
            }
        }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值