安卓離線打精簡(jiǎn)包根據(jù)官方文檔也可以完成仅政。以下記錄的是我個(gè)人打包的步驟和方法空郊,以防忘記湃崩。
以下方法僅僅是打出基礎(chǔ)的apk程序包,如果你們?cè)陧?xiàng)目中有特別的功能依賴還需要另行配置妈倔。
使用版本
- HBiulderX 版本為 2.5.1.20200103
- SDK 版本為:2.5.1.72759_20200104
- 安卓打包工具及系統(tǒng)信息如下
Android Studio 3.2
Build #AI-181.5540.7.32.5014246, built on September 18, 2018
JRE: 1.8.0_152-release-1136-b06 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
打包步驟
1:生成本地App資源包
? 使用HBuilderX 生成本地app的資源包,當(dāng)然項(xiàng)目已經(jīng)寫完绸贡,需要打包的時(shí)候盯蝴,相信大家都會(huì),以防有不知道的特記錄以下步驟
HBuilderX 發(fā)行 --> 原生App本地打包 --> 生成本地打包App資源
然后等待編譯完成听怕,資源文件在 uniapp項(xiàng)目根目錄\unpackage\resources
目錄下
2:創(chuàng)建安卓工程
? 使用AS創(chuàng)建一個(gè)空項(xiàng)目捧挺,具體信息根據(jù)個(gè)人實(shí)際情況而定。大致如下圖
? 以上應(yīng)該沒(méi)什么好說(shuō)的尿瞭,創(chuàng)建完項(xiàng)目闽烙,需要將
src\androidTest\java\[項(xiàng)目包名]
、src\main\java\[項(xiàng)目包名]\
声搁、src\test\java\[項(xiàng)目包名]
下的.java文件刪除黑竞,我試過(guò)不刪除,打包的時(shí)候會(huì)由于運(yùn)行test報(bào)錯(cuò)疏旨。所以我索性就都刪除了摊溶。
2.1:配置AndroidManifest.xml
2.1.1:修改名稱和版本
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="【項(xiàng)目包名,一般不用改】"
android:versionName="@string/version_name"
android:versionCode="@string/version_code">
其中android:versionName
為版本號(hào)充石。 android:versionCode
為沒(méi)有格式的版本號(hào)莫换。
@string/version_name
是我在src\main\res\values\strings.xml
中定義的兩個(gè)值,具體如下
<resources>
<string name="app_name">測(cè)試</string>
<string name="version_name">1.0.0</string>
<string name="version_code">100</string>
</resources>
2.1.2: 配置權(quán)限
我的辦法是直接利用BuilderX項(xiàng)目中的安卓權(quán)限復(fù)制粘貼骤铃,修改以下格式的辦法拉岁,如下:
打開(kāi)BuilderX項(xiàng)目中manifest.json
源碼視圖,復(fù)制節(jié)點(diǎn):app-plus/distribute/android/permissions
中的值
然后做一下處理變成
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
然后粘貼到安卓項(xiàng)目中的AndroidManifest.xml里惰爬。AS 會(huì)有錯(cuò)誤提示喊暖,使用AS 小紅色燈泡方法自動(dòng)修復(fù)一下就好了。如下:
2.1.3: 替換application節(jié)點(diǎn)
刪除或者注釋掉原application節(jié)點(diǎn)撕瞧,然后將如下信息替換進(jìn)去
<!--需要替換為DCloude的啟動(dòng)項(xiàng)-->
<!--
android:icon="@drawable/icon" 為apk圖標(biāo)文件陵叽,名字為icon.png
路徑在\app\src\main\res\drawable中
-->
<application
android:name="io.dcloud.application.DCloudApplication"
android:allowClearUserData="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:largeHeap="true"
>
<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>
<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>
</application>
以上配置完畢會(huì)有錯(cuò)誤信息,先不用管丛版。
配置完的完整形態(tài)如下:
2.2: 引入基本SDK文件
將下載下來(lái)的DCloud的SDK解壓后拷貝路徑Android-SDK@2.5.1.72759_20200104\SDK\libs
中
android-gif-drawable-release@1.2.17.aar
lib.5plus.base-release.aar
uniapp-release.aar
文件復(fù)制到安卓項(xiàng)目路徑\app\libs
下
當(dāng)然個(gè)人可以根據(jù)自己實(shí)際需要的功能及依賴引入自己需要的sdk文件巩掺。具體參考SDK下的Feature-Android.xls內(nèi)來(lái)配置和引用
2.3: 放入自己app的icon文件
將icon.png
文件放入安卓項(xiàng)目路徑\app\src\main\res\drawable
中。
2.4: 配置build.gragrdle
文件
剛創(chuàng)建的gradle文件如下
我直接貼出我使用的信息页畦,有一些我也不懂(我不是Android開(kāi)發(fā)工程師つ﹏?)所以可以根據(jù)個(gè)人實(shí)際情況做修改
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "你的包名"
minSdkVersion 17 //這個(gè)地方不要低于17
targetSdkVersion 28
versionCode 1
versionName "1.0"
multiDexEnabled true
ndk {
abiFilters 'arm64-v8a','armeabi-v7a','x86'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
/*代碼開(kāi)始*/
aaptOptions {
additionalParameters '--auto-add-overlay'
//noCompress 'foo', 'bar'
ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
}
/*代碼結(jié)束*/
}
repositories{
flatDir{
dirs 'libs'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation fileTree(include: ['*.aar'], dir: 'libs')
/*uniapp所需庫(kù)-----------------------開(kāi)始*/
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation "com.facebook.fresco:animated-gif:1.13.0"
/*uniapp所需庫(kù)-----------------------結(jié)束*/
// 基座需要胖替,必須添加
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.alibaba:fastjson:1.1.46.android'
}
修改完gragrdle
文件記得 點(diǎn)一下Sync Now
細(xì)心點(diǎn)會(huì)在AS上注意到的。嘿嘿
2.5: 開(kāi)始引入HBuilderX打包出來(lái)的App資源文件
2.5.1:引入必要的資源文件
首先將Android-SDK@2.5.1.72759_20200104\SDK\assets
文件夾復(fù)制到安卓項(xiàng)目跟目錄\app\src\main
下,修改安卓項(xiàng)目跟目錄\app\src\main\assets\data\dcloud_control.xml
文件
<app appid="DCloud的appid" appver="@string/version_name"/>
根據(jù)自己實(shí)際情況修改安卓項(xiàng)目跟目錄\app\src\main\assets\data\dcloud_properties.xml
文件独令。我是把自己覺(jué)得沒(méi)用的給注釋掉了端朵。
2.5. 2:放入uniapp打包后的資源文件
將 uniapp項(xiàng)目根目錄\unpackage\resources
目錄下文件夾復(fù)制到安卓項(xiàng)目跟目錄\app\src\main\assets\apps\
下,如沒(méi)有apps文件夾燃箭,自己創(chuàng)建一個(gè)冲呢。
注意:是apps不是app,我曾經(jīng)就是因?yàn)樯僖粋€(gè)s導(dǎo)致安裝到手機(jī)上白屏
基本按照以上步驟做完招狸,就可以編譯打包了敬拓。
番外
如何知道自己的DCloud的appid
其實(shí)uniapp項(xiàng)目根目錄\unpackage\resources
下的文件夾就是用DCloud的appid來(lái)命名的。