关于把android项目打包成jar的尝试

近期有个项目需求,把自家的项目代码达成jar包.供第三方调用

以下是一些记录:

1.一开始尝试过的办法是把src的java直接export为jar文件并新建一个demo调用. 

很快问题就出现了.:找不到资源

原因是目前的jar包中的代码,都是使用R.stirng.xxx R.id.xxx

大家都知道R.Xxx.xxx是由开发工具自动生成的,所以每个项目即便是相同命名的id.string....都是不一样的. 

后来在网上搜索一番. 找到一个一个不错的方法:

context.getClass().getClassLoader().getResourceAsStream();//获取资源流
context.getResources().getIdentifier(name, "id", context.getPackageName());//获取该Project下的属性id
 也就是说需要把代码中引用到 R.xxx.yyy的地方都改成 

context.getResources().getIdentifier("yyy", "xxx", context.getPackageName());
 实践证明,这个修改工作量极其繁琐,如果把资源文件也命名规范的话

2.说道 资源文件。 

鄙人不才,目前知道两种方法,一种是放到asset中,一种是直接复制到新的project中。

也就是说第一张是需要以流的方式使用。第二种则可以以(1)中的方法使用。


3在项目中遇到的一个问题就是自定义属性  R.styleable.xxxx  该属性是定义在arrts.xml 中的。使用R.styleable.xxxx   去访问的时候,返回的是一个int[]

苦恼找不到像(1)中可以返回资源id为int[]的方法

后来看了下R文件。

R.styleable.xxx 生成的id为

public static final int[] xxxx= { 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 };

于是就想起了一个方法 手动去组合该id

便有了这样的方法

                  new int[]{		
                        context.getResources().getIdentifier("qqq", "styleable", context.getPackageName()),
                        context.getResources().getIdentifier("aaa", "styleable", context.getPackageName())
}



这个问题便迎刃而解了。(因为我只用到2个属性。所以就只获取了2个。)

4 参考资源

打包多个jar的工具可以用fat-jar,安装过程就不赘述了。

http://blog.csdn.net/yy4040/article/details/6641688


交流邮箱:zhangnianxiang@gmail.com








 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值