備份HBuilderX安卓離線打包教程全一覽——5+app

<原創(chuàng)聲明>本文首發(fā)于微信公眾號(hào),具有原創(chuàng)標(biāo)識(shí),秉著知識(shí)共享、互幫互助的原則歡迎大家的轉(zhuǎn)載,但轉(zhuǎn)載須有度,還請(qǐng)加出處,請(qǐng)尊重別人的勞動(dòng)成果,謝謝。

HBuilderX是一款不錯(cuò)的前端編輯器,它為使用者提供了云打包和離線打包兩種形式,但云打包有著次數(shù)限制(可付費(fèi)解鎖)并且服務(wù)器繁忙時(shí)需要排隊(duì)等候,不利于開發(fā)者的正常調(diào)試。從另一方面來看,盡管官方對(duì)于隱私保護(hù)極為重視,但還是無法讓使用者打消代碼上傳泄露的疑慮,所以離線打包作為第二條打包途徑理當(dāng)重視。

HBuilderX安卓離線打包基于自身的SDK和AndroidStudio軟件,AndroidStudio對(duì)于初學(xué)者來說較難掌握,而官方文檔也過于簡(jiǎn)潔,初期打包可能各種報(bào)錯(cuò),我在社區(qū)里看到不少離線打包失敗的網(wǎng)友,本著知識(shí)共享的原則將HBuilderX安卓離線打包步驟一一演示,希望能幫助到大家。

第一步,AndroidStudio環(huán)境測(cè)試

首先要下載AndroidStudio軟件,下面是官方網(wǎng)址:

https://developer.android.google.cn/studio/index.html

我們可以看到目前最新的版本是3.63,大家根據(jù)自己的電腦配置按照要求下載安裝即可,如果想了解更多而自己的英文水平不是那么的好,可以私下里使用谷歌瀏覽器翻譯了解。

AndroidStudio下載安裝完成后打開,如下圖所示選中Empty Activity,點(diǎn)擊Next創(chuàng)建。

編輯應(yīng)用名稱、包名和保存位置,包名一般為com.***.*** 樣式。我們注意到下方Minimum SDK有下拉列表框選項(xiàng),這里簡(jiǎn)單解釋一下,這份是用來選擇API的,注意到下面的藍(lán)色標(biāo)記“Your app will run on approximately 92.3% of device”了沒,代表安卓用戶中有92.3%的用戶手機(jī)版本大于等于這個(gè)數(shù),也就是安卓5.1及以上版本的Android手機(jī)可以正常使用這個(gè)應(yīng)用,而低于此版本的即使安裝安裝成功也會(huì)閃退黑屏等無法打開。

這就需要你做一個(gè)權(quán)衡,怎么才能讓應(yīng)用覆蓋更多的用戶,太低不利于發(fā)展,太高用戶基數(shù)少,官方文檔的建議是大于等于19,我這里選的是22,大家自行斟酌。

點(diǎn)擊Finish完成創(chuàng)建。

看到下圖的紅色箭頭了沒,這個(gè)是創(chuàng)建模擬器的選項(xiàng),在最初沒有模擬器時(shí)如紅色下劃線狀態(tài),這在官方文檔里最后運(yùn)行描述時(shí)一筆帶過,至于我為什么詳細(xì)描述,在后面我會(huì)給大家解釋。

點(diǎn)擊紅色箭頭選項(xiàng)。

點(diǎn)擊Create Virtual Device創(chuàng)建虛擬設(shè)備

在Phone欄里隨意選擇各種配置的模擬設(shè)備,如果你的電腦配置并不是多么好,建議挑選簡(jiǎn)單的比較容易加載,在這里我挑選了一個(gè)320×480的。點(diǎn)擊Next。

系統(tǒng)鏡像,自己選擇。點(diǎn)擊Next。

這個(gè)默認(rèn)就行,直接點(diǎn)擊Finish。

我們可以看到虛擬設(shè)備已經(jīng)創(chuàng)建完成,點(diǎn)擊右上角×直接退出此界面。

順著最左邊的箭頭,可以看到剛剛創(chuàng)建的虛擬設(shè)備標(biāo)識(shí),點(diǎn)擊右邊箭頭指向的選項(xiàng),運(yùn)行虛擬設(shè)備(也可直接在上圖中直接點(diǎn)擊Actions欄中最左邊的三角符號(hào)運(yùn)行。)

等待片刻,模擬器成功打開。

此時(shí)點(diǎn)擊紅色方框中"Run app"選項(xiàng)。

發(fā)現(xiàn)剛剛創(chuàng)建的Empty Activity項(xiàng)目成功跑起,這也就證明了你的AndroidStudio已經(jīng)配置好了。相對(duì)于5+APP和uni-app來說,AndroidStudio上手難,成效低,不少個(gè)人開發(fā)者轉(zhuǎn)向移動(dòng)APP開發(fā)時(shí)都沒有接觸過它,在初涉AndroidStudio時(shí),好多人在安裝配置方面往往報(bào)錯(cuò),我第一次也是如此。

在寫這篇教程時(shí)我是默認(rèn)你SDK、API等全配置好了的,如果你在這一步報(bào)錯(cuò),模擬器沒能打開或者沒能成功顯示下圖界面,就說明哪里仍存在問題,后續(xù)運(yùn)行和調(diào)試自己的項(xiàng)目時(shí)很有可能會(huì)報(bào)錯(cuò),建議大家配置完畢再往下進(jìn)行。AndroidStudio的配置我就不在贅述,如果有需要后面會(huì)考慮附加一篇配置教程。

第二步,APP離線SDK下載

下載安卓離線SDK包,網(wǎng)址如下:

https://nativesupport.dcloud.net.cn/AppDocs/download/android

這里要吐槽的一點(diǎn)是需要通過百度網(wǎng)盤下載...

下載好后在目錄

2.6.16\Android-SDK@2.6.16.80137_20200426\SDK\libs

下找到

lib.5plus.base-release.aar

android-gif-drawable-release@1.2.17.aar

miit_mdid_1.0.10.aar

三個(gè)文件,復(fù)制到自定義的新文件夾方便使用

在目錄

2.6.16\Android-SDK@2.6.16.80137_20200426\SDK\assets

下找到data文件夾,打開可以發(fā)現(xiàn)下圖幾個(gè)文件。

返回上一級(jí),復(fù)制data文件夾如上操作,為了方便與三個(gè)文件放到一起。

第三步,HBuilderX生成本地打包資源

如圖,在發(fā)行選項(xiàng)→原生APP-本地打包(L)中選擇生成本地打包App資源(R)。

顯示導(dǎo)出成功,順著路徑將自己項(xiàng)目id名的文件夾拷貝,放到上一步自定義的文件夾下,方便使用。這里我的項(xiàng)目id是H525CFE5C,就把它放到與上一步復(fù)制的文件一起。

所需資源整理完畢,我們開始進(jìn)行下一步操作。

第四步,安卓離線打包環(huán)境配置

切換到AndroidStudio,如果你第一步操作像我一樣只是測(cè)試用,那也可以在里面再創(chuàng)建一個(gè)Empty Activity項(xiàng)目或者No Activity,在最后我會(huì)提到No Activity,這里采用官方文檔的方式創(chuàng)建Empty Activity即可。

我們可以看到之前默認(rèn)的是“Android”展示形式,而官方文檔里是Project,為了契合我們把它換成下拉列表選項(xiàng)中最上面Project樣式。

如圖。

以5+APP舉例,如下圖將

lib.5plus.base-release.aar

android-gif-drawable-release@1.2.17.aar

miit_mdid_1.0.10.aar

三個(gè)文件復(fù)制粘貼到libs目錄下

點(diǎn)擊build.grade,下滑到底部資源引用頁面

如下圖添加引用資源,

implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])

implementation 'com.github.bumptech.glide:glide:4.9.0' // 基座依賴

implementation 'com.android.support:support-v4:28.0.0'

implementation 'com.alibaba:fastjson:1.1.46.android'

點(diǎn)擊紅色圈中的任一選項(xiàng)進(jìn)行同步處理。

同步完成(這跟后面在AndroidManifest.xml中application節(jié)點(diǎn)添加內(nèi)容相聯(lián)系,如果沒有添加依賴會(huì)報(bào)紅)。

在原頁面最上方配置app版本號(hào)。

applicationId為創(chuàng)建時(shí)的包名,compileSdkVersion為編譯版本,minSdkVersion為兼容最小的版本號(hào),targetSdkVersion為目標(biāo)版本,有興趣的可以百度一下三者之間的區(qū)別和聯(lián)系。注意,官方文檔中標(biāo)注“App離線SDK minSdkVersion最低支持19,小于19在部分4.4以下機(jī)型上將無法正常使用?!?/i>

versionCode需要設(shè)定一個(gè)數(shù)值,一般為1,每次更新版本時(shí)versionCode的值都要比前一個(gè)設(shè)置的值大,否則無法正常安裝,versionName一般填寫主版本號(hào)次版本號(hào)和修正號(hào),如圖中的“1.0”為最初版本號(hào),其余的可以自行查閱。

下面配置資源,你可能會(huì)奇怪我為什么跟官方文檔順序不一樣,官方文檔這一步是開始在strings.xml里修改應(yīng)用名。因?yàn)橘Y源導(dǎo)入的先后會(huì)影響使用和觀感,之前在HBuilderX中生成本地打包的app資源還沒引入怎么跟strings.xml里的應(yīng)用名比較呢。

我們?cè)趍ain文件夾下創(chuàng)建assets文件夾。

把剛剛轉(zhuǎn)移到自定義文件夾下的data文件夾拷貝到assets文件夾下。

官方文檔中說dcloud1.dat、dcloud2.dat為uni-app所需資源(2.7.0之后已不在需要,升級(jí)時(shí)需要?jiǎng)h除,可以減少apk大?。?,我演示的是5+App,所以不需要這兩個(gè)文件。

繼續(xù)在剛剛創(chuàng)建的assets文件夾下創(chuàng)建apps文件夾,把第三步中的文件(我的是H525CFE5C)拷貝到apps文件夾下。

自此資源引入完成,進(jìn)行下一步strings.xml操作。

在app→src→main→res→ values配置strings.xml文件,修改應(yīng)用名稱,與

剛剛引入本地打包資源的里的manifest.json文件(assets>apps>“應(yīng)用id名文件夾”>www下)比較,

發(fā)現(xiàn)不一致,遂將string.xml里的“Test2020”改為Mood。

在app→src→main下配置AndroidManifest.xml文件,

在將內(nèi)容添加到application節(jié)點(diǎn)之前,不知道大家發(fā)現(xiàn)沒,Application標(biāo)簽下紅色圈中內(nèi)部也有activity,它和即將添加的activity之間會(huì)不會(huì)有沖突呢。

實(shí)際上使用AndroidStudio開發(fā)軟件時(shí),一個(gè)activity的使用要在AndroidManifest.xml中聲明,我們?cè)诘谝徊侥┪策\(yùn)行時(shí)發(fā)現(xiàn)最后輸出了"Hello World!"字樣的界面。

仔細(xì)觀察圖中圈出的activity,作為"Run App"跑出來的頁面,它在AndroidManifest.xml文件中<intent-filter />標(biāo)簽內(nèi)做出了主頁聲明,如果你不考慮這點(diǎn)直接忽略它的話,在模擬器上跑時(shí)也許會(huì)生成兩個(gè)相同圖標(biāo)的app,分別打開后一個(gè)是“Hello World!”界面,一個(gè)是你項(xiàng)目自定義的首頁如index.html,也有一定可能無法正常運(yùn)行,所以最好的辦法是直接注釋掉。

然后繼續(xù)下一步,添加內(nèi)容到application節(jié)點(diǎn)(建議復(fù)制官方文檔里的,下面的復(fù)制粘貼后排版會(huì)比較亂)。

代碼

<activity? ? ?

android:name="io.dcloud.PandoraEntry"? ? ? ? ? ? ? ? ? ? android:configChanges="orientation|keyboardHidden|keyboard|navigation"? ? ?

android:label="@string/app_name"? ? ?

android:launchMode="singleTask"? ? ?

android:hardwareAccelerated="true"? ? ?

android:theme="@style/TranslucentTheme"? ?

android:screenOrientation="user"? ?

android:windowSoftInputMode="adjustResize" >? ? ?

<intent-filter>? ? ? ? ?

<action android:name="android.intent.action.MAIN" />? ? ? ? ?

<category android:name="android.intent.category.LAUNCHER" />? ?

</intent-filter>?

</activity>?

<activity? ? ?

android:name="io.dcloud.PandoraEntryActivity"

android:launchMode="singleTask"? ? ? android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard"? ? ? android:hardwareAccelerated="true"? ? ? android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"? ? ? android:screenOrientation="user"

android:theme="@style/DCloudTheme"? ? ?

android:windowSoftInputMode="adjustResize">? ? ?

<intent-filter>? ? ? ? ?

<category android:name="android.intent.category.DEFAULT" />? ? ?

<category android:name="android.intent.category.BROWSABLE" />

<action android:name="android.intent.action.VIEW" />? ? ? ? ?

<data android:scheme="h56131bcf" />? ? ?

</intent-filter>?

</activity>

如下圖。

下面是應(yīng)用圖標(biāo)和啟動(dòng)頁面的配置

官方文檔

icon.png為應(yīng)用的圖標(biāo),push.png為推送消息的圖標(biāo),splash.png為應(yīng)用啟動(dòng)頁的圖標(biāo),只要將icon.png、push.png、splash.png放置到drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi,drawable-xxhdpi文件夾下,就會(huì)自動(dòng)引用,不同文件夾下對(duì)應(yīng)不同圖片尺寸,可參考

https://blog.csdn.net/xuaho0907/article/details/72848520

里面說的比較清楚,我就不多此一舉了,我舉另外的例子,通過AndroidStudio軟件修改應(yīng)用圖標(biāo)。

在應(yīng)用目錄內(nèi)部右鍵調(diào)出菜單(New→Image Asset),點(diǎn)擊。

出來應(yīng)用圖標(biāo)設(shè)置界面。

修改背景為紅色。

修改前景為文字M。

點(diǎn)擊Finish。

這樣一個(gè)簡(jiǎn)單的應(yīng)用圖標(biāo)就完成啦,有需求的可以網(wǎng)上詳細(xì)了解哦。

下面配置資源環(huán)境。

將assets下apps文件夾中的manifest.json文件和data文件夾中的dcloud_control.xml文件打開,確保manifest.json中的id和dcloud_control.xml中的appid一致。

自定義基座暫不考慮。

然后就可以愉快地調(diào)試程序啦,

Run~

圖標(biāo)

打開。

效果。

最后一步,離線打包

在菜單欄中選擇Build,點(diǎn)擊Generate Signed Bundle /APK...項(xiàng),進(jìn)入打包頁面。

選中APK,點(diǎn)擊Next。

打包需要簽名認(rèn)證,點(diǎn)擊Create new...創(chuàng)建。

如圖,第一行創(chuàng)建自定義jks文件,并確定路徑,我把它設(shè)置為Mood(這種其實(shí)是不符合jks格式的,最后生成時(shí)可能會(huì)有警告,點(diǎn)擊OK即可,一般為*-*-*jks,平時(shí)還是要多注意規(guī)范)。

填寫密鑰庫密碼和確定密鑰庫密碼,因?yàn)槭茄菔?,我把密碼設(shè)置為123456。

Alias為密鑰名稱,在這里把它設(shè)置mood,Password為密鑰密碼,仍設(shè)置為123456,Validity(years)為密鑰有效時(shí)間,按年算起,直接默認(rèn)。

下面First and Last Name為名字和姓氏 ,Organizational Unit為組織單位 ,Organization為組織,City or Locality為城市或地區(qū),State or Province為州或者省份,Country Code(XX)為國(guó)家 ,至少選填一種,這里我們直接填上國(guó)家China。

點(diǎn)擊OK。

跳轉(zhuǎn)到簽名界面,因?yàn)槎紟臀覀兲詈昧耍渣c(diǎn)擊Next即可。

這里要說一下V1和V2的選擇問題,V1屬于舊的驗(yàn)證方式,V2是在安卓版本7.0之后新的驗(yàn)證方式,只勾選V1在Android7.0以上不會(huì)使用更安全的驗(yàn)證方式,如果只勾選V2那么安卓版本7.0以下的手機(jī)將無法正常安裝,所以建議V1和V2同時(shí)勾選。

debug和release不用多說,一個(gè)是測(cè)試版一個(gè)是正式版,這里我直接選擇release,點(diǎn)擊Finish,等待打包完成。

完成打包,點(diǎn)擊locate或者直接進(jìn)入到AndroidStudio項(xiàng)目文件夾app>release下,

找到app-release.apk包,安裝。

打開。

教程結(jié)束。

總結(jié)

不知道大家發(fā)現(xiàn)沒有,上面都是在創(chuàng)建Empty Activity的基礎(chǔ)上進(jìn)行打包配置的,Empty Activity在app>src>main>java>自定義包名a.b.c的目錄下默認(rèn)生成MainActivity文件,這個(gè)文件又綁定了一個(gè)layout文件,默認(rèn)是在app>src>main>res>layout目錄下的activity_main.xml文件,在AndroidManifest.xml文件中做出activity聲明,最后我們還要把這個(gè)activity注釋或者刪除掉,這也就代表MainActivity文件和activity_main.xml文件沒有效用了,蚊子再小也是肉,刪掉還可以縮小點(diǎn)app體積。

其實(shí)沒必要后期刪除那么麻煩,大家只需在第一步創(chuàng)建Empty Activity項(xiàng)目用來測(cè)試AndroidStudio開發(fā)環(huán)境即可,在第四步開始時(shí),New>New Project創(chuàng)建No Activity用來打包自己的項(xiàng)目,點(diǎn)擊Next,下一頁同第一步一樣自定義,然后點(diǎn)擊Finish,這樣一個(gè)NoActivity項(xiàng)目就創(chuàng)建完畢啦。

在AndroidManifest.xml頁我們可以看到如下頁面:

只需把它修改為這樣。

再添加內(nèi)容。

后續(xù)步驟都是一樣的,這樣可以避免在AndroidManifest.xml中注釋或刪除默認(rèn)activity,也省去了刪除默認(rèn)文件的麻煩。

官方文檔中附加的內(nèi)容

基座配置文檔:

https://ask.dcloud.net.cn/article/35482

安卓模塊及第三方SDK配置:

https://nativesupport.dcloud.net.cn/AppDocs/usemodule/android

Android注意事項(xiàng):

https://nativesupport.dcloud.net.cn/AppDocs/FAQ/android

最后

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容