古詩詞大全網 - 個性簽名 - 請教如何用android studio同時打包多個apk?

請教如何用android studio同時打包多個apk?

問題:項目中不同的發行渠道可能需要封裝多種apk(相同代碼),封裝名稱可能不同。如果壹個壹個修改包名,重新編輯apk比較麻煩,可以參考以下步驟,在Android Studio上操縱Gradle,用不同的包名打包APK。

此處示例的目標是將相同的代碼打包到兩個包名不同的apk中:com.example.android.newsreader和com . example . Android . news reader dev。

1.首先,將以下代碼添加到build.gradle的android節點中

產品風味{

口味_發布{

manifest placeholders =[str:" release str ",package _ name:" com . example . Android . news reader "]

application id " com . example . Android . news reader "

}

口味_開發{

manifest placeholders =[str:" devStr ",package _ name:" com . example . Android . newsreaderdev "]

application id " com . example . Android . newsreaderdev "

}

}

productFlavors的作用是參數化打包,flavors_release和flavors_dev可以看作是自己定義的兩組變量,在實際操作中可以自定義。

註意有壹個manifestPlaceholders的參數,它實際上提供了幾個參數變量和值,這裏的所有參數都可以通過${name}的方式在AndroidManifest.xml中使用。本來想在AndroidManifest中參數化manifest的節點中的包,達到用不同的包名播放apk的目的,即:

& lt清單xmlns:Android = "/apk/RES/Android "

程序包= " $ {程序包名稱} "

android:versionCode="1 "

Android:version name = " 1.0 " & gt;

& lt用途-SDK Android:minSdkVersion = " 11 " Android:targetSdkVersion = " 14 "/& gt;

...

結果Android Studio的Lint自動給了我壹個提示:

顯示Android Studio推薦我通過設置applicationId來參數化包名。

因此,我在flavors_release和flavors_dev中添加了applicationId的設置,即:

讓我們看看它是否有效。

2.這壹步需要操作Gradle面板。

此時,我們在Android Studio右側的gradle面板中點擊按鈕進行刷新,這樣build子欄中就會出現以下內容:

以assemble*開頭的項都是生成apk的選項,生成的apk在build/outputs/apk中。在這裏,我們可以雙擊任何項目來生成相應的apk。

flavors_release和flavors_dev對應的apk應該是and這兩個,所以雙擊它們等待各自的進程生成apk。

3.檢查下面項目面板中的內容。

當我們打開項目面板時,我們發現實際上有幾個apk:

可以看到,每雙擊其中壹個gradle,就會生成三個apk。讓我們取出news reader-flavors _ dev-debug . apk和news reader-flavors _ release-debug . apk,用aapt命令檢查它們的包名(命令是aapt dump badging {filename.apk})。

果然包名不壹樣。

那麽可以同時安裝嗎?這裏,可以在模擬器中安裝兩個apk:

可以看到有兩個新聞閱讀器,完全壹樣,只是包名不同。

4.包裝時如何指定簽名?

輸入Build-& gt;在Android Studio的菜單欄裏。生成簽名的Apk:

指定您的密鑰庫,然後單擊下壹步:

在這裏,妳會發現flavors中有兩個項目,即我們在gradle中配置的兩個Flavors參數集。分別選擇它們,點擊完成,生成需要的apk。

5.有個問題,為什麽可以通過修改applicationId來修改包名?applicationID和packagename是什麽關系?

事實上,package在java代碼中表示包名。applicationId表示應用程序中的唯壹標識。與應用程序簽名壹起使用,以區別於其他應用程序。我想這就是為什麽Google market可以允許同壹個應用有不同的應用id。

最後壹個提示:打包後,最好在發布前進行全面測試,以免出現問題。