Android.mk导入第三方jar包和so库配置遇到的坑
本来是一个第三方APP,在AS中编译和运行非常方便的,神经兮兮的leader要让集成到Android系统中去。我多年的Android开发经验告诉我,leader是疯了吗。这样做的目的何在呢?我心里本来就知道从AS环境导入到源码中肯定会遇到很多的编译问题。。。一脸不爽但是工作是自己的,还得继续进行哦,这样就开始了我的移植代码之旅。
AS确实给了我们开发者很多便捷,代码联想自动填充,三方库配置导入一键青松搞定。看到AS中build.grade 中就配置了好几个三方库,我一脸懵逼了,都得把相关的jar包和so库提取出来呀。
第一步就是从AS从提取相应的jar包和so库。
第二步开始在源码目录中创建应用目录,我是在vendor/myProject/apps/xxxx下面创建的。
第三步按照源码里面工程目录将AS的代码目录重新整理放进来,尤其是注意src ,res 相关目录存放的位置。
第四步关键来了,将导入的jar包和三方库。放到libs下哦。
第五步就是写关键的mk文件了。
第六步开启你的编译之路,慢慢解决相关的编译问题吧。
注意点:
Android中,系统级的app使用到so库以后,都会去system/lib目录下去查找,所以你只需要把so库放置到system/lib目录下,然后在Android.mk中通过LOCAL_SHARED_LIBRARIES变量完成引用即可。我们可以通过adb把so库push到设备的system/lib目录下,可是,如果想要在android系统编译过程中,就实现so库拷贝到system/lib目录,那怎么办呢?这用到了Android编译系统中的PRODUCT_COPY_FILES变量。
#so library
PRODUCT_COPY_FILES += \
device/xx/xxx/libs/libtest1.so:system/lib/libtest1.so \
device/xx/xxx/libs/libtest2.so:system/lib/libtest2.so
希望对你有所帮助