【uniapp】Android離線精簡(jiǎn)打包步驟及方法

安卓離線打精簡(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í)際情況而定。大致如下圖


創(chuàng)建項(xiàng)目.png
創(chuàng)建2.png
創(chuàng)建3.png
創(chuàng)建4.png

創(chuàng)建5.png

? 以上應(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中的值

權(quán)限.png

然后做一下處理變成

    <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ù)一下就好了。如下:


image.png

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)如下:


配置am2.png
配置am3.png

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文件如下


build.gradle1.png

我直接貼出我使用的信息页畦,有一些我也不懂(我不是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

image.png

其實(shí)uniapp項(xiàng)目根目錄\unpackage\resources下的文件夾就是用DCloud的appid來(lái)命名的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓢颅,一起剝皮案震驚了整個(gè)濱河市恩尾,隨后出現(xiàn)的幾起案子弛说,更是在濱河造成了極大的恐慌挽懦,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件木人,死亡現(xiàn)場(chǎng)離奇詭異信柿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)醒第,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門渔嚷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人稠曼,你說(shuō)我怎么就攤上這事形病。” “怎么了霞幅?”我有些...
    開(kāi)封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵漠吻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我司恳,道長(zhǎng)途乃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任扔傅,我火速辦了婚禮耍共,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猎塞。我一直安慰自己试读,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布荠耽。 她就那樣靜靜地躺著鹏往,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伊履,一...
    開(kāi)封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天韩容,我揣著相機(jī)與錄音,去河邊找鬼唐瀑。 笑死群凶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哄辣。 我是一名探鬼主播请梢,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼力穗!你這毒婦竟也來(lái)了毅弧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤当窗,失蹤者是張志新(化名)和其女友劉穎够坐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崖面,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡元咙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了巫员。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庶香。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖简识,靈堂內(nèi)的尸體忽然破棺而出赶掖,到底是詐尸還是另有隱情,我是刑警寧澤七扰,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布奢赂,位于F島的核電站,受9級(jí)特大地震影響戳寸,放射性物質(zhì)發(fā)生泄漏呈驶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一疫鹊、第九天 我趴在偏房一處隱蔽的房頂上張望袖瞻。 院中可真熱鬧,春花似錦拆吆、人聲如沸聋迎。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)霉晕。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間牺堰,已是汗流浹背拄轻。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伟葫,地道東北人恨搓。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像筏养,于是被迫代替她去往敵國(guó)和親斧抱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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