如何將兩個APK合併成一個APK

jia635發表於2014-05-01



方法一,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_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)
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。






相關文章