安卓项目导出成jar,自带的res资源不能正常使用,网上各说纷纭,总结一下概括为五类,可是没有一种可以提供直接将res文件夹打包进jar,并可以使用R文件引用的方式。html
打包时包含res文件夹,并经过R文件的反射获取资源:android
此种方式最坑爹了,根本就是想固然。由于jar中的res与应用的res合并是在生成APK时,此时应用中对R文件中id的引用已经替换为常数,R文件不会在合并后再次更新,因此对jar中res的引用会报错。算法
打包时,将资源放在asset文件夹内,经过AssetsManager获取指定资源:spa
目标应用和jar中的assets文件夹会合并,因此能够经过获取该应用的此类文件夹来获取目标资源, ---缺点是若是是图片资源,不能与屏幕适配,若是有一种适配屏幕的算法,那么此法应该是可行的xml
另外就是资源会被暴露给二次开发者htm
使用library项目blog
参见博客地址:【这才是正解!】Android 自定义类库打包jar! 谁说不能够打包res 文件?图片
此类方法不能混淆代码,生成的jar包根本没有资源文件,而官网说明也指出此方式不能导出jar文件(并不是那篇博客中所说的能够使用bin目录下的jar包),也就是说发布时须要提供library源项目,也就是说你所谓的库代码直接暴露给别人了,这恐怕不是广大开发者所但愿的。资源
在引用此lib的目标项目中会看到一个包含已经编译成class.dex的jar文件,这个文件反编译之后仍然是只有代码部分。开发
使用双重library项目
参见博客地址:Android类库打包方法探究
博文的最后提供了一种双层library项目的方法,能够混淆代码,可是xml与图片资源仍然是暴露的,且发布时须要提供二级引用项目,操做上复杂度较高,不如直接提供jar包和资源
直接提供jar包和资源(分开)
依然是反射R文件,资源会被暴露给开发者。
目前综合判断,仍是第五种方式最粗暴简单直接,仍是但愿将来谷歌能够有这个方向的支持。