Android Studio引入jar包和so库

前言

由于项目要对接华为Anyoffice平台,所以需要引入对应SDKjar包和so库。其实网上有很多资料可以查到:AS下如何导入jar包和so库。但是正因为资料很多,所以说法不一,有些配置已经不再适用,有一些则写的比较混乱,容易引起误导。同时也出于总结的原因,所以才有了这篇文章。

导入jar包

  • 将需要导入的jar包复制到module/libs/目录下
  • 修改module/build.gradle文件的dependencies闭包,编辑这个文件有两种方法:
    加入编译jar包的代码,点击AS自动弹出的sync now即可。
dependencies {
    compile files('libs/AnyOfficeSDK.jar')
}

如果你不想在引入每个jar时,都进行上面的操作。那么你完全可以添加下面这行代码,表示编译所有的jar包。同样点击AS自动弹出的sync now

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
}

导入so库

  • 在module/src/main目录下新建文件夹,文件夹名称为jniLibs,注意大小写不要写错了
  • 将需要导入的so库复制到jniLibs目录下即可

遇到的问题

我按照上面的步骤成功导入了jar包和so库,编译并且打包成功。但是在运行app时,闪退!通过抓取日志,发现没有找到jar包的方法:

No pending exception expected: java.lang.NoSuchMethodError: no static method

为什么明明导入了jar包,却仍然找不到jar包中的方法呢?由此怀疑是否jar包没有打入apk中呢?又或者已经打入apk,系统为什么没有找到呢?那什么会影响编译打包呢?由此我想到了混淆,打开proguard.cfg文件,添加如下代码:

-dontwarn com.huawei.**
-keep class com.huawei.**{*;}

-dontwarn 表示让ProGuard不要警告找不到com.huawei.** 这个包里面的类的相关引用
-keep class 表示保持com.huawei.** 这个包里面的所有类和所有方法不被混淆
再次编译打包,发现apk大小要明显大于之前的包。运行app,问题解决!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容