1、当需要把一个Android导出为jar包时,如果里面有用到Resource,比如R.layout,R.id 其它程序引入这个包的时候会遇到id找不到的情况。这是因为导出jar的时候里面的R.id已经替换为一个int常量,而在新的程序中resource id会重新生成,两者不匹配就会产生问题。所以在这个jar工程中不能使用import xx.xx.R和R.XX.XX否则就会找不到
应该这样获取id:
getResources().getIdentifier(name, "资源类型",context.getPackageName());
如获取layout资源
1 | setContentView(getLayoutResIDByName( this , "mainjar" )); //layout名为“mainjar.xml” |
2 | public static int getLayoutResIDByName(Context context, String name) { |
3 | return context.getResources().getIdentifier(name, "layout" , |
4 | context.getPackageName()); |
5 | } |
2、导出jar
工程-->Export-->java -->JAR file
只勾选src
这样jar就导出完成了
3、添加jar
工程-->properites-->java build path-->Add JARs
导入后你会在工程下看到
4、将jar需要的资源放到到android工程相应目录下,同时android工程的manifest也要声明jar中的所有activity
android工程运行效果:
调用jar中的activity效果:
5、demo
