打包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、點擊下面辆毡,和之前一樣操作下去就可以了