大家好,我是你的好朋友思创斯。今天说一说uniapp打包成安卓_uniapp最多打包几次,希望您对编程的造诣更进一步.
本文使用cli
方式
0 安装开发环境
必备软件:
- , 下载版本sdk (一般是最新版。版本要与 hbuilder x版本一致,检查版本的方法看下面导出app资源小节)
申请
- 登录。如果没有账号,就注册一个。申请
appkey
需要进行邮箱和手机号的实名认证。 - 在左侧菜单中选择我创建的应用,点击应用
- 左侧选择
离线打包key管理
,选择对应平台 ios android,输入包名和sha1 (包名是自定义的,),确认无误点击保存,即可获取到对应平台的app.
替换 xxx为你的名称
// 生成 keystore 签名文件
keytool -genkey -alias xxx -keyalg rsa -keysize 2048 -validity 36500 -keystore xxx.keystore
// 查看 sha1 信息
keytool -list -v -keystore xxx.keystore
-alias xxx : xxx是别名
xxx.keystore : 文件名
配置
android
打开android项目,配置主app的androidmanifest.xml文件, 导航到application节点,创建meta-data节点,name为dcloud_appkey,value为申请的appkey如下:
ios
点击参考ios平台的配置appkey章节.
查看版本
!!! 首先请确保uni-app编译器的版本号和离线 sdk 的版本号一致。
如果版本不一致,app启动时会弹出版本不一致的提示框
- 通过
hbuilder x
创建的项目
帮助 —— 关于
- 通过
vue cli
创建的项目
cmd命令行 cd 到项目的根目录,执行npm run info
3.1.18是它的版本, 那么在上面时,也要选择3.1.18的版本。
1. 通过 hbuilderx 创建的项目
选择项目 -> 发行 -> 原生app-本地打包 -> 生成本地打包app资源
2. 通过 vue-cli 创建的项目
命令行 cd 到项目根目录,执行 npm run build:app-plus
,会在 项目目录/dist/build/app-plus
下生成app打包资源。
在项目根目录新建一个文件夹,以 src/manifest.json
中的 appid
字段为文件名,然后在文件夹中创建一个 www
目录,将 app-plus
文件夹下的资源拷贝到 www
目录中。
如果 manifest.json 中
的 appid
字段为空
,需要将项目拖进 hbuilderx 中重新获取一个 appid。注意:appid不能随便填写,必须重新获取。
用 hbuilderx 重新获取 appid
的方法:
- 打开 hbuilderx ,文件 —— 导入 —— 从本地目录导入,将项目导入进来
- 打开
src
目录,点击manifest.json
,点击基础配置右边的重新获取。
登录,查看appkey是否生成了,以及包名是否为空。如果没有appkey,那么要填写下面的内容,生成。
重新运行npm run build:app-plus
,生成新的app-plus内容,替换之前的www
文件夹里的内容,并且打开里面的manifest.json
应该能看到id
已经变成重新获取的appid
了。
0 新建android项目
如果之前没有新建android项目,那么要先创建一个空项目,如果已创建,可忽略此步骤。
填写 package name
,
language 选择 java
,因为小程序离线打包sdk不支持kotlin.
minsdkversion
最低支持21,小于21在部分5.0以下机型上将无法正常使用。
图片上的mini sdk是19,实际要选21
.
导入sdk libs
在步骤1.0里我们下载了小程序sdk,解压包,打开sdk/libs
, 拷贝以下文件到libs
目录下
lib.5plus.base-release.aar
android-gif-drawable-release@1.2.17.aar
uniapp-v8-release.aar
oaid_sdk_1.0.25.aar
libs目录:
点击左上角的android
, 切换到 project
视图
就可以看到 app/libs
目录
在build.gradle
中添加资源引用
切回android视图。复制下面的代码到app的build.gradle
里,
在dependencies
下面添加代码:
implementation filetree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
implementation "com.android.support:support-v4:28.0.0" // 28.0.0 要替换成你的build tools 版本
implementation "com.android.support:appcompat-v7:28.0.0"
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"
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.alibaba:fastjson:1.1.46.android'
其中28.0.0 要替换成你的build tools
版本,如图,这里是 30.0.3
uni-app配置时需要在build.gradle中添加aaptoptions
配置。 往上滑,在 android{}
里添加aaptoptions
:
android{
....
aaptoptions {
additionalparameters '--auto-add-overlay'
ignoreassetspattern "!.svn:!.git:.*:!cvs:!thumbs.db:!picasa.ini:!*.scc:*~"
}
}
注意:更新sdk时需要同时更新aar/jar文件和build.gradle配置
点击右上角sync now
,同步gradle配置。
配置
① 配置 androidmanifest.xml
打开androidmanifest.xml
,在application
节点,创建meta-data
节点,name为dcloud_appkey
,value为申请的appkey
. 如下:
<application>
<meta-data android:name="dcloud_appkey" android:value="替换为自己申请的appkey" />
application>
配置应用启动页及provider节点
androidmanifest.xml
-
删掉自动生成的
mainactivity
节点,如下图部分
同时删除项目里的mainactivity
类,不需要了。 -
复制如下代码到
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>
<provider android:name="io.dcloud.common.util.dcloud_fileprovider" android:authorities="${apk.applicationid}.dc.fileprovider" android:exported="false" android:granturipermissions="true">
<meta-data android:name="android.support.file_provider_paths" android:resource="@xml/dcloud_file_provider" />
provider>
!!! 注意:${apk.applicationid}
必须替换成当前应用的包名. 替换后: android:authorities=“com.carrie.knowpicture.dc.fileprovider”
- 配置应用名称、图标和启动界面
应用名称
打开 res - values - strings.xml
,修改 app_nane
的值。
应用图标
icon.png为应用的图标。
push.png为推送消息的图标。
splash.png为应用启动页的图标。
打开res
目录,新建drawable-xxxhdpi
文件夹,将图标放到 drawable-xxxhdpi
文件夹
修改androidmanifest.xml
中application节点的icon
属性为@drawable/icon
。如下图:
注意:splash.png在不同设备上显示效果不一样,为防止出现拉伸的状况,建议使用android studio生成.9.png类型图片
1 导入资源
新建 assets 目录
点击左上角的android
, 切换到 project
视图
如下依次点击打开目录,在 main
文件夹右键,新建文件夹,命名为 assets
。固定名称不能更改。
在assets
右键新建一个文件夹apps
,将 3.2 步骤的appid文件夹整个复制到 apps
目录下。(文件夹结构包含 appid 和 www)
配置资源文件
打开之前下载的小程序sdk文件夹, 打开 sdk - assets
文件夹,复制 data
文件夹到 android studio的assets
目录下
修改dcloud_control.xml
文件:
- 修改
appid
- 生成自定义基座,在
hbuilder
根节点下添加:
debug="true" syncdebug="true"
自定义基座支持热更新需要将debug-server-release.aar打入apk中,生成正式包时可以删除。
详细步骤参考
2. 配置签名信息
打开 app build.gradle
在buildtypes
上面添加如下代码:
signingconfigs {
config {
keyalias 'dnpic' // 在1.0步骤生成keystore文件时定义的别名
keypassword 'carrie' // keystore 密码
storefile file('e:/webdevelopment/dnpic/dnpic.keystore') // keystore 本地存储路径,用 斜杠 /
storepassword 'carrie' // keystore 密码
}
}
修改buildtypes - release
:
buildtypes {
debug {
signingconfig signingconfigs.config
minifyenabled false
proguardfiles getdefaultproguardfile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
signingconfig signingconfigs.config
minifyenabled true
shrinkresources true
proguardfiles getdefaultproguardfile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
同步 sync now
点击 运行
.
build – generate signed bundle / apk
选择 apk
选择release
, 选中 v1 v2
成功后,在 app\release 目录下,看到生成的apk.
(optional) 重写application
如果集成离线sdk时需要重写application
(不需要则跳过这一步),必须继承自dcloudapplication
,否则会导致sdk中业务逻辑无法正常运行。
新建一个java类 myapplication:
class myapplication extends dcloudapplication {
@override
public void oncreate() {
super.oncreate();
}
}
将myapplication
配置到androidmanifest.xml中(如下): 在 application
节点中添加代码:
android:name=".myapplication"
tools:replace="android:name"
tools需要导入。在上面的manifest
里添加:
xmlns:tools="http://schemas.android.com/tools"
name
里是myapplication路径,默认前缀为package
faq
1、项目配置都正确怎么还是提示”未配置appkey或配置错误”?
安装包的信息与你在申请appkey填写信息不符导致的。
appid 应用包名 签名sha1三者必须与申请填写的信息一致才可以的。
文章由思创斯整理,转载请注明出处:https://ispacesoft.com/91263.html