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

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”字段值,该值为安装到手机上桌面显示的应用名称:

  • 配置应用图标和启动界面
    将应用的图标(文件名为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即可

11 关注 分享
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

要回复文章请先登录注册

524216297@qq.com

524216297@qq.com

回复 syht2000@sina.com:
我看到一半看不下去了,除了这个方法只能云打包了?
4 天前
syht2000@sina.com

syht2000@sina.com

回复 Lspring:
8 Assets目录下创建apps目录,复制应用资源到apps目录下。 注意: 应用资源的路径为[appid]->www, appid为应用资源manifest.json文件中id节点的值

这里路径不是指让你建一个叫xxx.www的目录,而是在apps下先建一个xxx目录(xxx即为你manifest.json中的id),然后在xxx下再建立一个叫www的目录,然后hbuilderx本地打包出来的资源复制到这个www目录下即可(在as中这三个目录会显示成一个apps.xxx.www,千万不要看着上面的破图去建立一个叫apps.xxx.www的文件夹
2019-05-15 13:39
syht2000@sina.com

syht2000@sina.com

如果遇到停在splash界面,检查这里,上面这第8条都不知道是写的什么鬼
8 Assets目录下创建apps目录,复制应用资源到apps目录下。 注意: 应用资源的路径为[appid]->www, appid为应用资源manifest.json文件中id节点的值
这里路径不是指让你建一个叫xxx.www的目录,而是在apps下先建一个xxx目录(xxx即为你manifest.json中的id),然后在xxx下再建立一个叫www的目录,然后hbuilderx本地打包出来的资源复制到这个www目录下即可(在as中这三个目录会显示成一个apps.xxx.www
2019-05-15 13:36
开坦克的猫

开坦克的猫

有没有人知道离线打包成功后如何在Android原生中启动新的Activity?用一般的启动方式根本启动不了。
2019-05-15 10:34
15114833590@163.com

15114833590@163.com

现在新的SDK包跟这个文档,一个字都对不上,服了
2019-05-14 11:52
余红杰

余红杰

还有manifest.json标注一下参数(仅离线打包,仅云打包 类似的提示),可以么
2019-04-19 16:28
余红杰

余红杰

我问个问题,那个引入包的时候,uniapp和h5有没重复的地方?就是说我用uni-app的东西不用plus是不是不需要引入相应的lib,比如用uni的蓝牙,也需要打包plus的蓝牙模块,能不能把uni中的接口也feature文件标一下,之前蓝牙不可用我还好郁闷
2019-04-19 16:24
ahkoky

ahkoky

为什我下载的例子里面,sdk目录下都是‘aar’格式的?通用的使用方式吗?但是我的咋打包不进去啊,,
2019-04-18 11:57
bawangxx@qq.com

bawangxx@qq.com

hbuider这么强大的编辑器都开发出来了,就不能好好写下文档吗?
2019-04-11 13:56
xy2551@sina.com

xy2551@sina.com

回复 天使中的魔鬼:
我也快要去学用AS开发了。我去。好不容易做的差不多了。打包一堆错,也不知道怎么解决。
而且文档还更不上时代,自己的示例都和自己文档说的不一样。本来是要让大家更容易开发app结果文档却写得如此高深。
2019-04-11 08:33
逞英雄

逞英雄

一堆的错误啊
2019-03-22 14:40
34105011@qq.com

34105011@qq.com

打包倒是成功了,但是文件好大,有84m,为什么这么大?
2019-03-17 21:26
475396800@qq.com

475396800@qq.com

导入hello就弹出 您的项目文件包含非ascii字符。
2019-03-17 12:26
1227795015@qq.com

1227795015@qq.com

SDK_骁骑老师:按照你提供的教程操作了一遍,现在问题是,启动app后进入登录页,点击登录按钮无效啊,是不是你说的无法调用5+API的问题呢,有什么解决办法,多谢
2019-03-15 10:49
2373112754@qq.com

2373112754@qq.com

回复 943444578@qq.com:
说的的对,顶
2019-03-12 14:24
1047972701@qq.com

1047972701@qq.com

常识本地打包第一步就死了 呵呵哒
2019-01-17 14:54
天使中的魔鬼

天使中的魔鬼

真心觉得弄了一次hbuilder离线打包 都快学会安卓和IOS开发了?这文档的学习成本太高了...
2019-01-08 17:06
吊车尾

吊车尾

唉,没办法哇,Android就得靠Android Studio,Eclipse/MyEclipse都逃脱不了这命运;iOS也一样,就得靠XCode,强大如JetBrains的AppCode也不行!!!
2018-12-09 17:56
375890534@qq.com

375890534@qq.com

有两张图是一样的啊,,,,
2018-11-25 13:56
943444578@qq.com

943444578@qq.com

一堆错误,我要会Android 。 我他妈需要你hbuilder来打包?。
2018-11-06 11:10
Lspring

Lspring

回复 SDK_骁骑:
请问离线打包后怎么将html和js文件解压到根目录的www目录下呀,这个问题困扰好久了
2018-08-27 15:19
823181211@qq.com

823181211@qq.com

回复 823181211@qq.com:
这套流程都走不下来,细节问题还很多
2018-07-31 15:07
823181211@qq.com

823181211@qq.com

文档太老,很多说的路径根本没有,出现的问题也没有展示
2018-07-31 15:06
仦伯

仦伯

HBuilder-Hello在哪里下载啊
2018-04-21 11:07
742701496@qq.com

742701496@qq.com

离线打包为什么任务栏是粉色的?怎么修改?我没找到,改AndroidManifest.xml的主题也没用。求教。
2018-02-06 10:53
Gjguo@rxhui.com

Gjguo@rxhui.com

这个路径不对啊 app->src->res->values->strings.xml
2018-01-09 15:08
兮兮

兮兮

回复 meifeng@worldflying.cn:
你这个问题解决了吗?
2017-12-20 16:25
meifeng@worldflying.cn

meifeng@worldflying.cn

5+修改状态栏的方法失效了,是bug还是我哪里配置没改对?
2017-11-29 13:17
meifeng@worldflying.cn

meifeng@worldflying.cn

导入完成后,直接报这个错误:
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs
2017-11-27 14:46
逗逗水

逗逗水

回复 逗逗水:
打开log 显示 too much output to process ,我直接将HBuilderHello 导入到Androdio Studio 里运行出现的错误, 仅仅测试看效果还要在demo中修改其它配置吗?
2017-11-10 10:21
逗逗水

逗逗水

运行时出现这个问题
Error:Execution failed for task ':HBuilderHello:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs
2017-11-10 10:17
873168555@qq.com

873168555@qq.com

Information:Gradle tasks [:app:assembleRelease]
C:\Users\pan\Desktop\Android-SDK@1.9.9.34035_20170726\engkan\app\src\main\res\values\dcloud_gallery_strings.xml
Error:(2) Error: "dcloud_gallery_app_name" is not translated in "pt" (Portuguese), "tr" (Turkish) [MissingTranslation]
C:\Users\pan\Desktop\Android-SDK@1.9.9.34035_20170726\engkan\app\src\main\res\values\strings.xml
Error:(2) Error: "app_name" is not translated in "pt" (Portuguese), "tr" (Turkish), "zh" (Chinese) [MissingTranslation]
Error:Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.
To proceed, either fix the issues identified by lint, or modify your build script as follows:
...
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
...
Information:BUILD FAILED
Information:Total time: 2.943 secs
Information:3 errors
Information:0 warnings
Information:See complete output in console


打包时出现了这个这是为什么啊
2017-08-29 19:45
被梦想绊倒

被梦想绊倒

离线打包android,集成个推拿不到clientid的问题已经解决,参考http://www.jianshu.com/p/a3b02f2e81cb?nomobile=yes,其中的一个配置需要注意,在 Android模式下的Gradle Scripts的build.gradle(Module:app)里面的android分支下增加sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
2017-07-25 22:21
skysowe

skysowe

花了大半天时间,终于在AS2.3.3下编译SDK里自带的HBuilder-Hello成功,碰到的主要问题是Gradle编译的错误,可能出现问题的地方:

1)Android_sdk版本的问题,安装AS非常消耗资源,一开as,16g内存也捉襟见肘,按照网上的提示修改了as的缓存也没改善很多,用SDK Manager下了SDK 19(安卓4.x)【照顾低端设备的用户】,SDK 25(安卓7.x),只下最关键的,tv穿戴设备什么就别下了,img下一个x86或者64的一个就够了,一个就2g多,再大硬盘也放不下许多;下好了SDK用AVD Manager生成一个模拟器(配置了一个安卓4.4的虚拟设备),能运行即可;

2)导入项目之后,就有Error:Execution failed for task ':app:processDebugManifest'的错误,网上查了下应该是SDK版本没选对,然后大致了解了一下Android SDK里的compileSdk、minSdk、targetSdk、buildTools、Tools、Platform-tools的区别和用途,参考这篇文章http://www.jianshu.com/p/544d9f72883d ,不用细看,大致知道一下即可, 然后就是怎么配置和修改这几个参数的问题,参考了这篇文章http://blog.csdn.net/qiaoquan3/article/details/70185693 ,修改成25,Gradle就builder成功了,但是我还是打算要在低端设备上编译呀,就把几个参数都改成了19,Gradle又提示编译错误了,提示版本太低The SDK Build Tools revision (19.0.3) is too low for project XXX. Minimum required is 19.1.0 [duplicate],尝试着把Open Module Setting里的Build Tools Version改成了25,保存之后Gradle提示没有编译错误了!!!

3)中间其实还有一个编译错误,提示看了下log是说什么重复了,修改了AndroidManifest.xml,好像只能有一个推送PUSH的项目,看了下里面有个推还有小米推送,把小米推送的部分配置信息备注掉,就解决了

然后Shift+F10,打开AVD安卓模拟器,然后就慢慢等吧,好几分钟,然后模拟器里就出现了sdk里的HBuilder-Hello例子,,,回头再替换一下自己的程序试试看,看上面的教程估计要修改不少配置文件,漏了哪个可能就编译错误!希望能成功~
2017-07-16 12:40
wangyi

wangyi

Dcloud安卓打包,看这篇最详细的文档:http://blog.csdn.net/qq_33785670/article/details/75042714
2017-07-13 09:24
yangqj@xingyuanauto.com

yangqj@xingyuanauto.com

导入工程时,报 no frameworks detected。有人遇到过这个问题吗?
2017-07-11 10:51
2437611775@qq.com

2437611775@qq.com

[2017-06-24 16:47:32 - HBuilder-Integrate] Conversion to Dalvik format failed with error 1
报这个错,因为没有target=android-19
换成了android=23
2017-06-24 16:59
1205334783@qq.com

1205334783@qq.com

写的的java文件能不能做成sdk在njs里调用
2017-06-16 18:37
orchie

orchie

用离线打包以后还能放到hbuilder里面编辑吗?
2017-05-25 10:55
博美云言工

博美云言工

这个,文档虽然是老了点,按照这个步骤是可以完全实现,基本一个小时做完,顺便还加了个开机自启动功能
2017-05-20 17:33
1019422167@qq.com

1019422167@qq.com

mark
2017-05-07 15:02
18931880682@163.com

18931880682@163.com

qq:254437106
加我qq, androud ios 全帮你搞定
2017-04-28 17:45
金猫Tiger

金猫Tiger

SDK 包里面的东西少了,或者jar包名字有错误?!
2017-03-08 17:07
my87@163.com

my87@163.com

"Android Studio 2.0 版本,按照以上步骤,编译不成功,希望官网能够更新一下文档。对于不太懂 Android 开发的我来说,一大堆的错误,不知道从何处入手。" ----------
2017-03-02 15:32
SDK_骁骑

SDK_骁骑

回复 438668599@qq.com:
请提供一下报错的工程
2017-02-17 20:37
438668599@qq.com

438668599@qq.com

我在android studio 2.2.2 中导入HBuilder-Hello 发现上面的步骤不行,我把对应的android-19的错误,找到,然后设置了android7.0 对应的24.0.3 发现还是有一堆的错误,control+F10,报could not find method android for arguments 错误。
2017-02-15 16:24
failedtocopy

failedtocopy

Adb connection Error:远程主机强迫关闭了一个现有的连接。
这又是什么问题呢?
2017-02-13 15:12
failedtocopy

failedtocopy

现在能打包了 ,但是还有个问题 debug包可以成功地安装到手机上,release包不行 , 这个是为啥呢?
2017-02-09 15:39
failedtocopy

failedtocopy

我按照步骤运行到“在演示工程中已经配置好HelloH5应用相关资源,完成导入后,可Shift F10直接编译运行:”这一步就会出现很多的错误提示:
Information:BUILD SUCCESSFUL
Information:1,248 errors
Information:0 warnings
2017-02-09 14:02
failedtocopy

failedtocopy

到最后启动应用就完了? 这不是要打包么? 你倒是说完啊?
2017-02-08 10:09
35577925@qq.com

35577925@qq.com

按着本文轻松搞定,不到1小时改造成自己的项目。比起从零一个一个添jar包省事。
个人感觉最快,且不太会出问题的的方法是:
1. 用 as导入后,删掉 assets目录下官方demo内容,将自己web内容放进去(注意appId)。
res目录下各分辨率下的app Logo,splash图片,
接着修改清单文件,gradle里的内容:包名、相关key(微信啊,个推等)
改好就可以跑起来了。

2. 想搞的好点。不要那些多余的东西,闲了可以 删除 清单里没用到的,libs下没用的。(结合Feature-Android.xls ,还有自己项目 )

不会的联系哥,QQ 35577925 ,= =。再次感谢撸主
2016-11-27 22:07
zhanglqiangyilang@qq.com

zhanglqiangyilang@qq.com

回复 wtxingxuan@163.com:
我也是,请问你解决了吗
2016-11-21 10:36
SDK_骁骑

SDK_骁骑

回复 Element:
文档最底下添加了一个问题的说明,你看下是不是你遇到的问题,如果不是这个问题,建议你开一个帖子详细描述一下问题
2016-10-12 17:56
Element

Element

AndroidStudio2.1.2 按此步骤操作无效!!!
2016-10-11 19:31
160431017@qq.com

160431017@qq.com

可以把H5+ 程序代码不放在asset下吗?改成将其压缩成zip文件后可以动态发布,由原生APP解压到指定目录后加载
2016-09-21 10:40
书痕

书痕

在用AndroidStudio2.1.2,跟这个文档流程很不一样,希望能更新,或者解释一下原理,也能让我们在面对新版本时自行灵活处理
2016-08-21 15:19
DB11

DB11

回复 SDK_骁骑:
为什么不能修改?
2016-08-10 16:43
SDK_骁骑

SDK_骁骑

回复 1031350293@qq.com:
Rinfomation.java文件所在的包名不能修改
2016-07-01 22:48
1031350293@qq.com

1031350293@qq.com

不可以修改包名,修改以后报错了,原因是pdr.jar包里面有个WebAPPActivity文件引用了
import io.dcloud.RInformation;
2016-07-01 13:28
wtxingxuan@163.com

wtxingxuan@163.com

新建h5的移动app项目怎么导入到Android Studio中,提示“cannot import”
2016-04-20 15:48
IT界爱因斯坦

IT界爱因斯坦

Android Studio 2.0 版本,按照以上步骤,编译不成功,希望官网能够更新一下文档。对于不太懂 Android 开发的我来说,一大堆的错误,不知道从何处入手。
2016-04-13 18:25
IT界爱因斯坦

IT界爱因斯坦

回复 camelwoo:
我的也是无法运行。点击 run 后报错:Gradle build finished with 1155 error(s) in 1m 19s 915ms

D:\www6\HBuilder-Hello\app\src\main\java\io\dcloud\RInformation.java

应该怎么解决好?
2016-04-13 18:15
camelwoo

camelwoo

还要修改 app 中的 build.gradle 的 applicationId 属性,修改 RInformation.java 中的 import。
2016-03-18 14:16
camelwoo

camelwoo

不使用的组件在 properties.xml 中也要注释掉,否则无法启动。
2016-03-18 14:13
thirteenth

thirteenth

没有AndroidManifest.xml是如何配置的。很多东西不明确,没有多少参考价值。而且Android Studio 升级后,很多东西都变了。
2016-01-26 10:43