Android中将Activity打入jar包供其它app调用的实现方法
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。 |
|