Android中将Activity打入jar包供其它app调用的实现方法

来源:互联网 发布:caxa自动编程 编辑:程序博客网 时间:2024/05/17 02:46
Android打jar包通常不会出现将Activity打入jar包的情况,但若确有“工程A要调用工程B的Activity,工程B的代码又不能与A放在一起编译”的需要, Android也还是可以做到的,步骤如下:
1. 确定工程A和工程B是否有同名的Activity文件,若有,则要将其中一个工程的相应文件改名;
2. 确定工程A和工程B的res目录下是否有同名的layout/anim/drawable文件,若有,则要将其中一个工程的相应文件改名;
3. 确定工程A和工程B的values目录下的strings.xml文件中是否有同名的string name,若有,则也要将修改其中一个工程相应的string name。建议将被调用的工程的string name都加一个前缀;
4. 参照第3点,检查values目录下的colors.xml, styles.xml等文件,不要出现同样的color name和style name;
5. 对于工程B,被编译为jar包后,资源ID(比如R.id.xxxxx)不再是常量,所有需要确认工程B中是否有如下代码:
         switch (xxx) {
          case R.id.xxxxx
     若有,需要改为if (R.id.xxxxx == xxx);
6. 将工程B中的libs\armeabi目录下的.so文件转移到工程A的对应目录中,注意,是转移,不是复制;
7. 将工程B中的res目录合并到工程A的res目录:
     a. 对于仅存在于工程B中的文件或目录,则将其复制到工程A;
     b. 对于两边都存在的文件,则需要将工程B中的文件内容添加到工程A的对于文件中;
8. 将工程B的AndroidManifest.xml中的内容添加到工程A的AndroidManifest.xml中,包括uses-permission, activity等;
9. 将工程A和工程B的package name改为一样;
10. 选择工程B,打开属性对话框,在Android页面勾选“Is Library”,然后执行Project菜单中的Build Project操作;
11. 将工程B中的libs目录下的.jar文件复制到工程A的libs目录中,并将工程B的bin目录下新生成的.jar文件也复制到工程A的libs目录中,更新.classpath;
12. 在工程A中实现对工程B的Activity的调用逻辑,编译运行工程A。