标题稍微有点不太准确,其实有时候我们需要两个工程,最后合并成一个apk,也就是两个工程目前都是有源码的,他们可能之前是两个独立的apk,现在需要整合成一个apk。如果只有apk文件没有源码,请直接离去。
方法一,Eclipse开发环境中整合:
1. 工程原来是两个APK,InnerAPK和OuterAPK,里面都只有一个Activity,分别为InnerActivity和OuterActivity。
2. 在InnerAPK工程上选择右键,选择Properties->Android,勾选Is Library,然后选择Apply,点击OK关闭对话框即可。
3. 第(2)其实将InnerAPK作为一个Library工程了,我们需要在OuteAPK中引用这个工程,同样在OuterAPK上点击右键,选择Properties->Android,选择Add,然后选择InnerAPK。
4. 之后可以在你需要使用的地方直接import InnerAPK的包名即可,比如import com.example.innerAPK.InnerActivity。
5. 将在InnerActivity中的AndroidManifest.xml文件中的内容移动到OuterActivity的AndroidManifest.xml文件中,此例子只有InnerActivity而已:
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".OuterActivity" android:label="@string/title_activity_outer" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- add from innerAPK --> <activity android:name="com.example.innerapk.InnerActivity" android:label="@string/title_activity_inner" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>这样只需要安装一个APK,OuterAPK就可以使用Inner和outer两个activity,且在OuterActivity中可以直接引用InnerActivity的code。
方法二:在Android源代码包上mmm命令编译
1. 首先将InnerAPK和OuterAPK两包代码都复制到packages/apps目录下
2. 在OuterAPK目录下新建Android.mk文件,内容如下
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_SRC_FILES += $(call all-java-files-under, ../InnerAPK/src) LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res packages/apps/InnerAPK/res LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages com.example.innerapk LOCAL_PACKAGE_NAME := OuterAPK include $(BUILD_PACKAGE)3. 然后跟方法一的第(5)步一样,将AndroidManifest.xml文件中的内容从一个Inner转移到Outer当中。
4. 然后采用mmm命令编译生成apk。