vue移動端項目使用HBuilder 本地離線 打包安卓app


打包app之前(vue項目里操作)

1捺信、vue項目中config文件夾下的index.js里‘/’改成‘./'

2.router.js中不能使用history模式

3.需要在vue項目根目錄下 npm run build 然后生成static文件夾和index.html(一會兒使用)


本地離線打包

參考HBuilder文檔地址:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android

一、配置開發(fā)環(huán)境(3個開發(fā)環(huán)境必須配置好)

1.安裝Android Studio

下載地址:

Android Studio官網(wǎng)? https://developer.android.google.cn/studio/index.html

Android Studio官網(wǎng)中文社區(qū)? ? http://www.android-studio.org/

2.安裝HBuilderX

下載地址:? https://www.dcloud.io/hbuilderx.html

3.App離線SDK下載:

(HBuilderX 版本要和sdk版本對上,可以在上面官網(wǎng)文檔下載最新的sdk)

鏈接:https://pan.baidu.com/s/14MgN6jxs8jPY1aNwRTL8Yw

提取碼:kttv

SDK目錄說明

|-- HBuilder-Hello? ? ? ? ? ? ? ? App離線打包演示應(yīng)用

|-- HBuilder-Integrate-AS? ? ? ? 集成uni-app或5+ app的最簡示例

|-- SDK? ? ? ? ? ? ? ? ? ? ? ? ? ? SDK庫文件目錄

|-- Feature-Android.xls? ? ? ? ? ? Android平臺各擴(kuò)展Feature API對應(yīng)的詳細(xì)配置

|-- Readme.txt? ? ? ? ? ? ? ? ? ? 版本說明文件及注意事項

|-- UniPlugin-Hello-AS? ? ? ? ? ? uni原生插件開發(fā)示例

tip:安裝下載具體流程

1.Android Studio







2.安裝HBuilderX

下載完解壓之后雙擊就能用


3.sdk下載完等待備用


二、創(chuàng)建HBuilder項目

1、打開HBuilder創(chuàng)建一個項目


2豫喧、配置應(yīng)用(名稱圖標(biāo)等)


3、把之前build的vue項目中index.html和static放進(jìn)去替換一下


4幢泼、點擊發(fā)行->原生app-本地打包->生成本地打包app資源


5紧显、打包完畢,備用


三缕棵、新建安卓項目

1孵班、 打開Android studio新建一個空白項目


選擇 Empty Activity 點擊 Next涉兽。


(1)Package name作為應(yīng)用標(biāo)志,涉及申請第三方平臺賬號篙程,一般情況下不建議修改枷畏,包名一般設(shè)置反向域名,如:io.dcloud.HBuilder

(2) Minimum API Level 建議選19及以上

(3)點擊 Finish 完成創(chuàng)建虱饿。


創(chuàng)建虛擬設(shè)備點擊小手機(jī)


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


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


系統(tǒng)鏡像折柠,自己選擇。點擊Next批狐。


這個默認(rèn)就行扇售,直接點擊Finish。


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


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


等待片刻贰谣,模擬器成功打開娜搂。


此時點擊紅色框中"Run app"選項。

發(fā)現(xiàn)剛剛創(chuàng)建的Empty Activity項目成功跑起吱抚,這也就證明了你的AndroidStudio已經(jīng)配置好了百宇。如果你在這一步報錯,模擬器沒能打開或者不能成功顯示下圖界面秘豹,就說明哪里仍存在問題携御,后續(xù)運行和調(diào)試自己的項目時很有可能會出錯,建議配置完畢再往下進(jìn)行既绕。(都成功了不用關(guān)繼續(xù)下面內(nèi)容)


2啄刹、配置工程

2.1、基礎(chǔ)庫配置

將之前下載好的App離線SDK里libs文件中的lib.5plus.base-release.aar凄贩、android-gif-drawable-release@1.2.17.aar和miit_mdid_1.0.10.aar(HBuilderX2.8.1之后更新到msa_mdid_1.0.13.aar)拷貝到剛剛創(chuàng)建的安卓項目libs目錄下(app/libs)

SDK:

安卓項目


復(fù)制完在app/build.gradle中添加資源引用(復(fù)制到dependencies里 )

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'

復(fù)制完選中復(fù)制的內(nèi)容點擊紅色圈中的任一選項進(jìn)行同步處理鸵膏。


2.1、應(yīng)用配置

配置應(yīng)用版本號

打開HBuilder創(chuàng)建的項目的manifest.json文件和安卓項目的app/build.gradle對照更改,要一致

applicationId "com.example.baohuyun"

minSdkVersion 19

targetSdkVersion 30

versionCode 1

versionName "1.0"



versionCode為應(yīng)用的版本號(整數(shù)值)怎炊,用于各應(yīng)用市場的升級判斷谭企,建議與manifest.json中version -> code值一致

versionName為應(yīng)用的版本名稱(字符串)廓译,在系統(tǒng)應(yīng)用管理程序中顯示的版本號,建議與manifest.json中version -> name值一致债查。

applicationId為應(yīng)用的包名非区,一般設(shè)置為反向域名,不建議修改盹廷。

建議將targetSdkVersion設(shè)置為25或以上征绸。

App離線SDK minSdkVersion最低支持19,小于19在部分4.4以下機(jī)型上將無法正常使用俄占。

完整版build.gradle

apply plugin: 'com.android.application'

android {

? ? compileSdkVersion 30

? ? buildToolsVersion "30.0.3"

? ? defaultConfig {

? ? ? ? applicationId "com.example.baohuyun"

? ? ? ? minSdkVersion 19

? ? ? ? targetSdkVersion 30

? ? ? ? versionCode 1

? ? ? ? versionName "1.0"

? ? ? ? testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

? ? }

? ? buildTypes {

? ? ? ? release {

? ? ? ? ? ? minifyEnabled false

? ? ? ? ? ? proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

? ? ? ? }

? ? }

}

dependencies {

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

? ? 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'

? ? implementation 'androidx.appcompat:appcompat:1.0.2'

? ? implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

? ? testImplementation 'junit:junit:4.12'

? ? androidTestImplementation 'androidx.test.ext:junit:1.1.0'

? ? androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'

}

配置應(yīng)用名稱

打開app->src -> main -> res -> values -> strings.xml文件管怠,修改“app_name”字段值,該值為安裝到手機(jī)上桌面顯示的應(yīng)用名稱缸榄,建議與manifest.json中name(基礎(chǔ)配置中的應(yīng)用名稱)對應(yīng)渤弛。 version對應(yīng)build.gradle


配置應(yīng)用啟動頁及provider節(jié)點

將下述內(nèi)容添加到app/src/main/Androidmanifest.xml的application節(jié)點中

注意:新建的項目默認(rèn)會有一個MainActivity的節(jié)點,必須刪掉甚带!

注意:${apk.applicationId} 必須替換成當(dāng)前應(yīng)用的包名

? <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>

? <!--provider節(jié)點必須添加-->

? <provider

? ? ? android:name="io.dcloud.common.util.DCloud_FileProvider"

? ? ? android:authorities="${apk.applicationId}.dc.fileprovider"

? ? ? android:exported="false"

? ? ? android:grantUriPermissions="true">

? ? ? <meta-data

? ? ? ? ? android:name="android.support.FILE_PROVIDER_PATHS"

? ? ? ? ? android:resource="@xml/dcloud_file_provider" />

? </provider>

改完之后app/src/main/Androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

? ? package="com.example.baohuyun">

? ? <application

? ? ? ? android:allowBackup="true"

? ? ? ? android:icon="@mipmap/ic_launcher"

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

? ? ? ? android:roundIcon="@mipmap/ic_launcher_round"

? ? ? ? android:supportsRtl="true"

? ? ? ? android:theme="@style/AppTheme">

? ? ? ? <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>

? ? ? ? <!--provider節(jié)點必須添加-->

? ? ? ? <provider

? ? ? ? ? ? android:name="io.dcloud.common.util.DCloud_FileProvider"

? ? ? ? ? ? android:authorities="com.example.baohuyun.dc.fileprovider"

? ? ? ? ? ? android:exported="false"

? ? ? ? ? ? android:grantUriPermissions="true">

? ? ? ? ? ? <meta-data

? ? ? ? ? ? ? ? android:name="android.support.FILE_PROVIDER_PATHS"

? ? ? ? ? ? ? ? android:resource="@xml/dcloud_file_provider" />

? ? ? ? </provider>

? ? </application>

</manifest>

資源配置

將SDK->assets->data文件夾拷貝到src/main文件夾下與java同級她肯,如下圖:


注意:dcloud1.dat、dcloud2.dat為uni-app所需資源(2.7.0之后已不在需要鹰贵,升級時需要刪除晴氨,可以減少apk大小)碉输,5+APP可將這兩個文件刪除籽前。

注意:SDK升級時,data下資源需要同時更新敷钾。

創(chuàng)建apps文件夾并拷貝資源(在app/src/main/assets下創(chuàng)建)

將HBuilderX中的項目unpackage/resources下的打包好的文件 復(fù)制到assets->apps下聚假,如下圖所示:


修改dcloud_control.xml文件


點擊下面按鈕


模擬器就顯示出來了,沒報錯正常顯示就可以繼續(xù)下一步


點擊下面


右下角提示

打包成功放到手機(jī)就可以

后面頁面有改動需要再次打包的情況

1闰非、把新build的vue項目中index.html和static放進(jìn)HBuilder項目替換一下


2膘格、 打包


3、 在android項目中的app/src/main/assects/apps中财松,把打包完的文件替換進(jìn)去瘪贱,


4、點擊下面辆毡,和之前一樣操作下去就可以了


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末菜秦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子舶掖,更是在濱河造成了極大的恐慌球昨,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眨攘,死亡現(xiàn)場離奇詭異主慰,居然都是意外死亡嚣州,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門共螺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來该肴,“玉大人,你說我怎么就攤上這事藐不≡群澹” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵雏蛮,是天一觀的道長涎嚼。 經(jīng)常有香客問我,道長挑秉,這世上最難降的妖魔是什么法梯? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮衷模,結(jié)果婚禮上鹊汛,老公的妹妹穿的比我還像新娘蒲赂。我一直安慰自己阱冶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布滥嘴。 她就那樣靜靜地躺著木蹬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪若皱。 梳的紋絲不亂的頭發(fā)上镊叁,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音走触,去河邊找鬼晦譬。 笑死,一個胖子當(dāng)著我的面吹牛互广,可吹牛的內(nèi)容都是我干的敛腌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼惫皱,長吁一口氣:“原來是場噩夢啊……” “哼像樊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起旅敷,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤生棍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后媳谁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涂滴,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡友酱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了氢妈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粹污。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖首量,靈堂內(nèi)的尸體忽然破棺而出壮吩,到底是詐尸還是另有隱情,我是刑警寧澤加缘,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布鸭叙,位于F島的核電站,受9級特大地震影響拣宏,放射性物質(zhì)發(fā)生泄漏沈贝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一勋乾、第九天 我趴在偏房一處隱蔽的房頂上張望宋下。 院中可真熱鬧,春花似錦辑莫、人聲如沸学歧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枝笨。三九已至,卻和暖如春揭蜒,著一層夾襖步出監(jiān)牢的瞬間横浑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工屉更, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留徙融,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓瑰谜,卻偏偏與公主長得像欺冀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子似舵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容