日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android打包(一)

發布時間:2024/4/13 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android打包(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近出了一點事,比較煩,所以很長一段時間沒怎么去寫文章。為了防止生疏,還是覺得隨便寫寫點什么,我覺得打包還是挺有意思的,所以打算試試看,因為以前的項目打包是不歸我管,既然沒做過,那就試試吧。

一.初試打包

看了下,其實打包不難理解(這里的打包就是多渠道那些了),有點難度的是理解它的原理,所以我覺得可以先玩玩打包,玩爽了,原理也容易懂了。

1.在gradle中添加代碼塊

要配置打包的話,需要在gradle中添加一個productFlavors方法

productFlavors{myOne{manifestPlaceholders = [APP_NAME: "myOne"]}myTwo{manifestPlaceholders = [APP_NAME: "myTwo"]}}

比如我這里就分了兩個不同的包myOne和myTwo。

2.系統默認的打包

就一般情況下,androidstudio會默認配置幫你配好兩個包release和debug,比如我新創的一個項目,在gradle中就有一個這樣的代碼塊

buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}

這里沒有debug了,因為如果直接調試就是debug了,沒必要再打包。
但是這兩個還是有區別的,在buildTypes方法中主要是配置release 和debug的包,在productFlavors方法中可以配置自定義的包,也可以做一些個性化的操作。

3.效果

其實效果是可以選的,androidstudio的打包到最后的可視化頁面中會讓用戶去選擇打什么包。

image.png

手動打包到最后一步有選


DLP{X%%3%S6AB2FFS0LX$HL.png

可以看出Build Tyoe對應buildTypes ,Flavors對應productFlavors,命令打包下面說。我這里主要是為了說你在gradle的productFlavors方法中配置不同包的話,手動打包的時候可以選擇打哪個配置的包。

二.更改包名

為了區分不同的包,我決定更改包名,其實這里就是想說說怎么在gradle和manifests中傳值。

1.在manifests中設置變量

我先在manifests中設置變量。


image.png

我把label標簽的值設置成${APP_NAME} ,這是manifests里面的語法,我覺得語法這種東西沒必要解釋這么多,就像如果用過DataBinding的話會在manifests中寫更多的變量。

2.在編譯時設置
image.png

可以在gradle中用manifestPlaceholders來設置manifest中的變量。原理比較抽象之后會說,先會用就行。

3.結果
image.png

結果你會發現打出來的包中apk的名稱會不同,所以相應的我們同樣可以去換APP的icon之類的。

我覺得這就是打包的原理了,上面幾步都很簡單,我覺得唯一郁悶的就是它的這個命名,有一種翻譯不出中文味道的感覺。

對了,如果想換不同包調試的話,這里可以選


image.png

三.命令打包

在Terminal窗口中輸入命令gradlew assembleRelease可以把所有的包打出來,當然這個命令很多,需要用到哪個可以自己去查,打出來之后發現會是這樣子

image.png
后面顯示未簽名,所以我們需要在腳本中加入簽名的信息
先自己創建一個簽名,然后在代碼中配置這個簽名

signingConfigs {release {storeFile file("test.jks")storePassword "123456"keyAlias "test"keyPassword "123456"}}

然后再buildTypes的release添加這個簽名


image.png

之后就能導出簽名的包了


image.png

四.walle打包

這個是一個美團的多渠道打包的插件,為什么要用這個插件呢,直接用上面的方法不就行了嗎,有時候需要打包多,項目大,一個包要打很長時間,這種情況如果一個一個打就會花費很長時間。
好吧,我用walle的最大原因就是能節省打包的時間,而且修改的時候方便。

1.導入插件

這個應該直接上https://github.com/Meituan-Dianping/walle看,當前的版本的導入方法是。
在主模塊的gradle中

apply plugin: 'walle'dependencies {......compile 'com.meituan.android.walle:library:1.1.5'...... }walle {apkOutputFolder = new File("${project.buildDir}/outputs/channels")apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}-${flavorName}.apk'//configFile與channelFile兩者必須存在一個,否則無法生成渠道包。兩者都存在時優先執行configFilechannelFile = new File("${project.getProjectDir()}/channel.txt")//configFile = new File("${project.getProjectDir()}/config.json") }

walle里面的意思在項目地址里面有詳細的說明,我就不再多解釋。

在項目的gradle中配置

buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:2.2.3'classpath 'com.meituan.android.walle:plugin:1.1.5'} }

然后寫個多渠道的文件


image.png

${project.getProjectDir()}是app目錄,我這是是在app目錄下創建一個channel.txt的文件,按照官方的做法寫渠道。


image.png

你取什么名都行,相應配置就行。目標文件也是,取什么名,放哪里,主要是在walle 方法中配置就行,我這里的目標文件是app文件夾下的outputs文件夾下的channels文件夾。

用命令打所有的包:gradlew clean assembleReleaseChannels , mac系統要在前面加./

這樣就可以導出所有包了,還有其它的命令可以在項目地址里面看,我這里只寫了導所有。

image.png

然后channels文件夾下就有所有所配置的渠道的包。這個插件用起來還是很方便的。

總結

以上是生活随笔為你收集整理的Android打包(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。