DCloud_App_Array
DCloud_App_Array
  • 发布:2016-01-12 19:33
  • 更新:2 天前
  • 阅读:167263

Android平台本地(离线)打包指南 - Android Studio

分类:5+ SDK

预备环境

  • AndroidStudio开发环境,要求安装Android4.0或以上(API 14)SDK。
  • 下载HBuilder离线打包Android版SDK(5+ SDK下载)。

离线打包SDK目录说明

  • HBuilder-Hello:离线打包演示应用;
  • HBuilder-Integrate: 5+ SDK 集成和插件开发示例
  • libs:SDK库文件目录;
  • Feature列表.xls:Android平台各扩展Feature API对应的permission;
  • Readme.txt:版本说明文件。

配置编译工程

  • 导入演示应用HBuilder-Hello工程
    启动AndroidStudio 点击导入工程“import project”


    选中工程所在目录点击“OK”

    选择生成的AndroidStudio工程的保存路径,然后点击“next”,

    在演示工程中已经配置好HelloH5应用相关资源,完成导入后,可Shift F10直接编译运行:

    从SDK目录中拷贝要使用的feature库到工程app/libs目录
    参考“Feature列表.xls”文档确定应用中使用到的扩展API,拷贝libs目录中对应的“jar”文件拷贝到工程的app->libs目录下,如果有引用“so”文件需要拷贝到工程的app->src->main->jniLibs下对应目录中。如使用分享功能(新浪微博分享、腾讯微博分享,微信分享),则需要拷贝以下文件:

    拷贝完成后在工程中刷新可在工程的libs目录下显示:

  • 配置应用的权限
    参考“Feature列表.xls”文档确定应用中使用到的扩展API,在AndroidManifest.xml文件中删除不用到API的权限。如不使用音频(plus.audio.*)相关5+ API,则可删除Audio相关的权限:

  • 配置其它第三方库的数据
    由于第三方库需要使用一些特定的数据,所以在使用时需要将相关参数配置到AndroidManifest.xml文件中。如使用分享功能,则需要配置各分享平台的申请应用的相关参数:


    如果不使用此类API,则可将此数据删除。
    插件的配置方法请参考以下文档
    Android离线打包插件配置
    推送插件配置
    分享插件配置
    登陆鉴权插件配置
    地图插件配置
    支付插件配置
    定位插件配置

  • 配置应用的包名及版本号
    打开AndroidManifest.xml文件,在代码视图中修改根节点的package属性值,如下:


    其中package为应用的包名,采用反向域名格式,为应用的标识;versionCode为应用的版本号(整数值),用于各应用市场的升级判断,建议与manifest.json中version -> code值一致;versionName为应用的版本名称(字符串),在系统应用管理程序中显示的版本号,建议与manifest.json中version -> name值一致。

  • 配置应用名称
    打开app->res -> values -> strings.xml文件,修改“app_name”字段值,该值为安装到手机上桌面显示的应用名称,建议与manifest.json中name(基础配置中的应用名称)对应:

  • 配置离线打包广告支持及渠道打包配置
    新版本SDK简化了离线打包支持DCloud广告联盟功能。
    AndroidManifest.xml文件中添加如下节点到节点中,并配置替换其中5+应用appid、广告联盟会员adid的值和渠道标识,因为涉及到开屏广告业务,项目工程必须以io.dcloud.PandoraEntry作为5+应用的入口Activity。该activity已包含在lib.5plus.base-release中,开发者无需实现

    <meta-data android:name="DCLOUD_AD_ID" android:value="广告标识"/>  
    <meta-data android:name="DCLOUD_AD_SPLASH" android:value="true"/><!--如果不开启开屏广告则不设置此字段或者值设置为false-->  
    <meta-data android:name="DCLOUD_STREAMAPP_CHANNEL" android:value="包名|应用标识|广告标识|渠道,如io.dcloud.appid|appid|adid|google" /><!--为了保证广告统计的有效性,请正确设置此值-->
    • 包名:对应Android项目中build.gradle中的applicationId,如io.dcloud.HBuilder
    • 应用标识:对应对应5+或uni-app项目manifest.json中appid
    • 广告标识:DCloud的广告标识,开通广告后可在dev.dcloud.net.cn获取,如果没有开通广告,设置值为空即可
    • 渠道:渠道包制作指南
      注意:提交谷歌应用市场(Google Play)时一定要将渠道标识设置为google!!!
      注意:以上操作只是配置5+应用具备广告能力,实际开通需要在manifest.json配置开关,具体参考DCloud广告联盟
      如果不需要支持广告,仍然可以使用WidgetWebView方式集成。
  • 配置应用图标和启动界面
    将应用的图标(文件名为icon.png)启动图片按照对应的尺寸拷贝到工程的app->src->main->res -> drawable-XXX目录下:

  • 更新应用资源
    打开app->src->main->assets -> apps 目录,将下面“HelloH5”目录名称修改为应用manifest.json中的id名称(这步非常重要,否则会导致应用无法正常启动),并将所有应用资源拷贝到其下的www目录中:

  • 配置应用信息
    打开app->src->main->assets -> data下的control.xml文件,修改appid和appver的值:


    其中appid值为HBuilder应用的appid,必须与应用manifest.json中的id值完全一致;appver为应用的版本号,用于应用资源的升级,必须保持与manifest.json中的version -> name值完全一致;version值为应用基座版本号(plus.runtime.innerVersion返回的值),不要随意修改。

  • 配置完成编译运行
    应用配置完毕,按Shift F10编译运行应用
    在弹出的设备列表对话框中选择要运行的设备:


    点击OK后启动应用:

常见问题

Q: 打包后页面中无法调用5+API
A: 修改app->build.gradle文件defaultConfig节点下miniSdkVersion和targetSdkVersion属性指定版本号为8

注意(新版已不需要添加):打包时如果修改APK的包名,则同时需要修改Rinfomation.java文件import的包名,
同时需要修改AndroidManifest.xml文件中引用包名的插件有
推送插件
微信(登陆,分享 ,支付),微信同时需要修改引入的WXEntryActivity.java和WXPayEntryActivity.java文件所在的包名

Q :使用Android Studio编译时如果提示如下错误

A:
下载附件并解压

点击下载
点击 Android Studio 菜单 File->Settings->Build,Execution,Development->Build Tools->Gradle选择Use local gradle distribution,选择附件解压后的目录点击OK即可

15 关注 分享
Charles Trust skysowe 455169601@qq.com 1452176237@qq.com zhaoyong111@sina.com yhusky@qq.com 292201026@qq.com 1090635942@qq.com Geeker 772567199@qq.com jzq84229 877058416@qq.com 1106812539@qq.com 1600157980@qq.com

要回复文章请先登录注册

郑志成

郑志成

我能不能吐槽一句,我看了一天的文档,不知道是不是文档的内容太旧还是我装的AndroidStudio 太新了或是 我学习的姿势不对,“从SDK目录中拷贝要使用的feature库到工程app/libs目录”,这个 feature 目录在哪里 我怎么找了半天都没看到,只看到了一个 feature.xls 文件,麻烦 官方人员写文档能不能走点心啊~ 希望官方人员看到回复一下邮件,谢谢 ! qiushuiwanyue@163.com,最近很着急使用这个平台工具
2 天前
1135520344@qq.com

1135520344@qq.com

回复 飞刀英雄:
辣鸡还要付费 没有开源精神
2019-12-04 17:39
417897@qq.com

417897@qq.com

用最新的2.4.2版本的Hbuilder运行到手机上,一切正常。通过云打包,安装到手机上也正常。用同样版本的SDK配置安卓工程,运行到手机上,导航栏莫名其妙就不显示了;离线打包后的apk安装到手机上,同样是导航栏不显示。
不知道哪位遇到过这种情况?
2019-12-04 12:27
飞刀英雄

飞刀英雄

没有android studio基础的,这个文档操作起来问题会很多,很难打包成功。我把android离线打包录制了一个视频,大家可以看着视频操作,轻松实现离线打包。观看地址:http://www.xiaotiaogou.com/mui003.php
2019-12-01 20:53
582655612@qq.com

582655612@qq.com

你们实例工程还能出来我示例工程都出不来,图标是安卓默认,名称修改无反应。app更是直接打不开
2019-11-30 01:29
1542796041@qq.com

1542796041@qq.com

回复 mliuchengyu@live.cn:
目录是分开的,3层目录:apps/UNIB9AAF73/www
2019-11-28 10:00
1542796041@qq.com

1542796041@qq.com

回复 236154186@qq.com:
如果你打的是安卓,那可能是因为你打包的gradle脚本中设置了abifilters,必须起码要有armeabi-v7a才行,参见weex的文档。如果有些so没有v7a版,就从armeabi中拷过去,删除armeabi目录,abifiters中也删除。

ndk {
abiFilters 'armeabi-v7a'
}
2019-11-28 09:54
279629802@qq.com

279629802@qq.com

我用的是HBuilderX是2.3.7.20191024版本,打包SDK是2.3.7.70461_20191024版本,打包正常,没问题,但是换成最新版的会有一些问题,可能还需要在配置什么东西,暂时没研究
2019-11-28 08:55
236154186@qq.com

236154186@qq.com

折腾了一天离线打包,文档有的都浏览了一遍,还是示例工程能出来,自己的项目就白屏,无奈放弃!!!!!
2019-11-25 20:09
592908207@qq.com

592908207@qq.com

云打包没问题,自己按步骤打包,用雷电模拟器运行有app,不过内容不全,直接自带模拟器android27版本没法安装,直接模拟器奔溃了
2019-11-24 16:45