HBuilderX安卓离线打包教程

HBuilderX是一款不错的前端编辑器,它为使用者提供了云打包和离线打包两种形式,但云打包有着次数限制(可付费解锁)和服务器繁忙时需要排队等候,不利于开发者的正常调试,从另一方面来看,尽管官方对于隐私保护极为重视,但还是无法让使用者打消代码上传泄露的疑虑,所以离线打包作为第二条打包途径理当重视。

 

HBuilderX安卓离线打包基于自身的SDK和AndroidStudio软件,AndroidStudio对于初学者来说较难掌握,而官方文档也过于简洁,初期打包可能各种报错,我在社区里看到不少离线打包失败的网友,本着知识共享的原则将HBuilderX安卓离线打包步骤一一演示,希望能帮助到大家。

 

 

第一步,AndroidStudio环境测试

 

首先要下载AndroidStudio软件,下面是官方网址:

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

 

 

我们可以看到目前最新的版本是3.63,大家根据自己的电脑配置按照要求下载安装即可,如果想了解更多而自己的英文水平不是那么的好,可以私下里使用谷歌浏览器翻译了解。

 

AndroidStudio下载安装完成后打开,如下图所示选中Empty Activity,点击Next创建。

 

 

编辑应用名称、包名和保存位置,包名一般为com.***.*** 样式。我们注意到下方Minimum SDK有下卡列表框选项,这里简单解释一下,这份是用来选择API的,注意到下面的蓝色标记“Your app will run on approximately 92.3% of device”了没,代表安卓用户中有92.3%的用户手机版本大于等于这个数,也就是安卓5.1及以上版本的Android手机可以正常使用这个应用,而低于此版本的即使安装安装成功也会闪退黑屏等无法打开。

 

这就需要你做一个权衡,怎么才能让应用覆盖更多的用户,太低不利于发展,太高用户基数少,官方文档的建议是大于等于19,我这里选的是22,大家自行斟酌。点击Finish完成创建。

 

 

看到下图的红色箭头了没,这个是创建模拟器的选项,在最初没有模拟器时如红色下划线状态,这在官方文档里最后运行描述时一笔带过,至于我为什么详细描述,在后面我会给大家解释。

 

点击红色箭头选项。

 

 

点击Create Virtual Device创建虚拟设备

 

 

在Phone栏里随意选择各种配置的模拟设备,如果你的电脑配置并不是多么好,建议挑选简单的比较容易加载,在这里我挑选了一个320×480的。点击Next。

 

 

系统镜像,自己选择。点击Next。

 

这个默认就行,直接点击Finish。

 

 

我们可以看到虚拟设备已经创建完成,点击右上角×直接退出此界面。

 

 

顺着最左边的箭头,可以看到刚刚创建的虚拟设备标识,点击右边箭头指向的选项,运行虚拟设备(也可直接在上图中直接点击Actions栏中最左边的三角符号运行。)

 

 

等待片刻,模拟器成功打开。

 

 

此时点击红色下划线"Run app"选项。

 

 

发现刚刚创建的Empty Activity项目成功跑起,这也就证明了你的AndroidStudio已经配置好了。相对于H5APP来说,AndroidStudio上手难,成效低,不少个人开发者转向移动APP开发时都没有接触过它,在初涉AndroidStudio时,好多人在安装配置方面往往报错,我第一次也是如此。

 

在写这篇教程时我是默认你SDK、API等全配置好了的,如果你在这一步报错,模拟器没能打开或者没能成功显示下图界面,就说明哪里仍存在问题,后续运行和调试自己的项目时很有可能会报错,建议大家配置完毕再往下进行。AndroidStudio的配置我就不在赘述,如果有需要后面会考虑附加一篇配置教程。

 

 

 

第二步,APP离线SDK下载

 

下载安卓离线SDK包,网址如下:

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

 

这里要吐槽的一点是需要通过百度网盘下载...

 

 

下载好后在目录

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

三个文件,复制到自定义的新文件夹方便使用

 

在目录

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

下找到data文件夹,打开可以发现下图几个文件。

 

返回上一级,复制data文件夹如上操作,为了方便与三个文件放到一起。

 

 

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

 

如图,在发行选项→原生APP-本地打包(L)中选择生成本地打包App资源(R)。

 

 

显示导出成功,顺着路径将自己项目id名的文件夹拷贝,放到上一步自定义的文件夹下,方便使用。这里我的项目id是H525CFE5C,就把它放到与上一步复制的文件一起。

 

 

所需资源整理完毕,我们开始进行下一步操作。

 

 

第四步,安卓离线打包环境配置

 

切换到AndroidStudio,如果你第一步操作像我一样只是测试用,那也可以在里面再创建一个Empty Activity项目或者No Activity,在最后我会提到No Activity,这里采用官方文档的方式创建Empty Activity即可。

 

 

我们可以看到之前默认的是“Android”展示形式,而官方文档里是Project,为了契合我们把它换成下拉列表选项中最上面Project样式。

 

 

如图。

 

 

以5+APP举例,如下图将

lib.5plus.base-release.aar

android-gif-drawable-release@1.2.17.aar

miit_mdid_1.0.10.aar

三个文件复制粘贴到libs目录下

 

 

点击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'

 

点击红色圈中的任一选项进行同步处理。

 

 

同步完成(这跟后面在AndroidManifest.xml中application节点添加内容相联系,如果没有添加依赖会报红)。

 

 

在原页面最上方配置app版本号。

 

applicationId为创建时的包名,compileSdkVersion为编译版本,minSdkVersion为兼容最小的版本号,targetSdkVersion为目标版本,有兴趣的可以百度一下三者之间的区别和联系。注意,官方文档中标注“App离线SDK minSdkVersion最低支持19,小于19在部分4.4以下机型上将无法正常使用。”

 

versionCode需要设定一个数值,一般为1,每次更新版本时versionCode的值都要比前一个设置的值大,否则无法正常安装,versionName一般填写主版本号次版本号和修正号,如图中的“1.0”为最初版本号,其余的可以自行查阅。

 

下面配置资源,你可能会奇怪我为什么跟官方文档顺序不一样,官方文档这一步是开始在strings.xml里修改应用名。因为资源导入的先后会影响使用和观感,之前在HBuilderX中生成本地打包的app资源还没引入怎么跟strings.xml里的应用名比较呢。

 

 

我们在main文件夹下创建assets文件夹。

 

 

 

把刚刚转移到自定义文件夹下的data文件夹拷贝到assets文件夹下。

 

 

官方文档中说dcloud1.dat、dcloud2.dat为uni-app所需资源(2.7.0之后已不在需要,升级时需要删除,可以减少apk大小),我演示的是5+App,所以不需要这两个文件。

 

 

继续在刚刚创建的assets文件夹下创建apps文件夹,把第三步中的文件(我的是H525CFE5C)拷贝到apps文件夹下。

 

 

 

自此资源引入完成,进行下一步strings.xml操作。

 

在app→src→main→res→ values配置strings.xml文件,修改应用名称,与

 

 

刚刚引入本地打包资源的里的manifest.json文件(assets>apps>“应用id名文件夹”>www下)比较,

 

 

发现不一致,遂将string.xml里的“Test2020”改为Mood。

 

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

 

在将内容添加到application节点之前,不知道大家发现没,Application标签下红色圈中内部也有activity,它和即将添加的activity之间会不会有冲突呢。

 

实际上使用AndroidStudio开发软件时,一个activity的使用要在AndroidManifest.xml中声明,我们在第一步末尾运行时发现最后输出了"Hello World!"字样的界面。

 

仔细观察图中圈出的activity,作为"Run App"跑出来的页面,它在AndroidManifest.xml文件中<action android:name="android.intent.action.MAIN" />做出了主页声明,如果你不考虑这点直接忽略它的话,在模拟器上跑时也许会生成两个相同图标的app,分别打开后一个是“Hello World!”界面,一个是你项目自定义的首页如index.html,也有一定可能无法正常运行,所以最好的办法是直接注释掉。

 

然后继续下一步,添加内容到application节点(建议复制官方文档里的,下面的复制粘贴后排版会比较乱)。

 

 

代码

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

 

如下图。

 

 

下面是应用图标和启动页面的配置,官方文档说的比较清楚,我就不多此一举了,我举另外的例子,通过AndroidStudio软件修改应用图标。

在应用目录内部右键调出菜单(New→Image Asset),点击。

 

 

出来应用图标设置界面。

 

 

修改背景。

 

 

修改前景。

 

 

点击Finish。

 

 

这样一个简单的应用图标就完成啦,有需求的可以网上详细了解哦。

 

下面配置资源环境。

 

将assets下apps文件夹中的manifest.json文件和data文件夹中的dcloud_control.xml文件打开,确保manifest.json中的id和dcloud_control.xml中的appid一致。

 

 

自定义基座暂不考虑。

 

然后就可以愉快地调试程序啦,

 

Run~

 

 

图标

 

 

打开。

 

效果。

 

 

最后一步,离线打包

 

在菜单栏中选择Build,点击Generate Signed Bundle /APK...项,进入打包页面。

 

 

选中APK,点击Next。

 

 

打包需要签名认证,点击Create new...创建。

 

 

如图,第一行创建自定义jks文件,并确定路径,我把它设置为Mood(这种其实是不符合jks格式的,最后生成时可能会有警告,一般为a-b-c.jks,平时还是要多注意规范)。

 

 

填写密钥库密码和确定密钥库密码,因为是演示,我把密码设置为123456。

 

Alias为密钥名称,在这里把它设置mood,Password为密钥密码,仍设置为123456,Validity(years)为密钥有效时间,按年算起,直接默认。

 

下面First and Last Name为名字和姓氏 ,Organizational Unit为组织单位 ,Organization 为组织,City or Locality为城市或地区,State or Province为州或者省份,Country Code(XX)为国家 ,至少选填一种,这里我们直接填上国家China。

 

点击OK。

 

 

跳转到签名界面,因为都帮我们填好了,所以点击Next即可。

 

 

这里要说一下V1和V2的选择问题,V1属于旧的验证方式,V2是在安卓版本7.0之后新的验证方式,只勾选V1在Android7.0以上不会使用更安全的验证方式,如果只勾选V2那么安卓版本7.0以下的手机将无法正常安装,所以建议V1和V2同时勾选。

 

debug和release不用多说,一个是测试版一个是正式版,这里我直接选择release,点击Finish,等待打包完成。

 

 

完成打包,点击locate或者直接进入到AndroidStudio项目文件夹app>release下,

 

 

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

 

 

 

打开。

 

 

教程结束。

 

总结

 

不知道大家发现没有,上面都是在创建Empty Activity的基础上进行打包配置的,Empty Activity在app>src>main>java>自定义包名a.b.c的目录下默认生成MainActivity文件,这个文件又绑定了一个layout文件,默认是在app>src>main>res>layout目录下的activity_main.xml文件,在AndroidManifest.xml文件中做出activity声明,最后我们还要把这个activity注释或者删除掉,这也就代表MainActivity文件和activity_main.xml文件没有效用了,蚊子再小也是肉,删掉还可以缩小点app体积。

 

其实没必要后期删除那么麻烦,大家只需在第一步创建Empty Activity项目用来测试AndroidStudio开发环境即可,在第四步开始时,New>New Project创建No Activity用来打包自己的项目,点击Next,下一页同第一步一样自定义,然后点击Finish,这样一个NoActivity项目就创建完毕啦。

 

 

在AndroidManifest.xml页我们可以看到如下页面:

 

 

只需把它修改为这样。

 

再添加内容。

 

 

后续步骤都是一样的,这样可以避免在AndroidManifest.xml中注释或删除默认activity,也省去了删除默认文件的麻烦。

 

官方文档中附加的内容

 

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

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

 

Android注意事项:

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值