uni-app项目离线打包
当我们需要使用原生开发时,需要对uni-app项目使用离线打包方式进行调试运行及打包。
以下将简单整理uni-app项目离线打包Android应用相关流程,让你对整个流程有一个大体的了解。
离线打包流程
一、创建安卓项目
使用 Android Studio 4.1+ 新建一个空白项目。
- 打开Android Studio:
File > New > New Project > Empty Activity > Next
。 - 填写项目名称、包名、位置,选择java语言(离线打包不支持Kotlin语言),SDK选择19及以上;然后点击
Finish
完成创建。
二、配置SDK环境
下载好 Android 离线 SDK 3.0+ 文件,配置uni-app相关环境。
- 将
SDK\libs
目录的
lib.5plus.base-release.aar
、
android-gif-drawable-release@1.2.17.aar
、
uniapp-v8-release.aar
、
msa_mdid_1.0.13.aar
拷贝到新项目的libs目录下。 - 在
build.gradle
的dependencies
属性中添加资源引用:implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) implementation "com.android.support:support-v4:28.0.0" 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'
- 在
build.gradle
的android
属性中添加aaptOptions配置:aaptOptions { additionalParameters '--auto-add-overlay' ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~" }
三、项目应用配置
-
版本号 在
build.gradle
中编辑versionCode
和versionName
。 -
应用名 在
app > res > main > values > strings.xml
文件,修改app_name
字段值,该值为安装到手机上桌面显示的应用名称,建议与uni-app项目中manifest.json
中name一致。 -
启动页 配置应用启动页及provider节点,让uni-app接管大权。先删除
Androidmanifest.xml
中目默认的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节点必须添加--> <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}
必须替换成当前应用的包名。 -
应用图标 在
drawable
目录下:
icon.png
为应用的图标。
push.png
为推送消息的图标。
并修改Androidmanifest.xml
中application
节点的icon
属性为@drawable/icon
。
如果有时间和心情,可以将各个分辨率图片进行相应整理。 -
启动界面 在
drawable
目录下:
splash.png
为应用启动页的图片。
为了适配多种设备屏幕,免去图片拉伸变形困扰,建议是.9.png
格式的图片来制作启动页面,详见用一张正方形9.png图片搞定安卓启动页。
四、项目资源配置
- 资源目录 在
java
同级创建assets\data
文件夹,将SDKassets\data
文件夹中的内容拷贝进去。SDK升级时,assets\data
下的资源需要一起更新。 - 源码目录 在
assets
下创建apps
文件夹,用于存放编译后的uni-app源码。 - APPID 修改
dcloud_control.xml
中的appid
,与manifest.json
中的id和文件夹名一致。
五、项目资源生成
- 编译 在HBuilder X中,选中uni-app项目
发行 > 原生App-本地打包 > 生成本地打包App资源
,等待资源生成完成。 - 拷贝 将生成好的资源连带项目ID一级的文件夹拷贝至 源码目录 下。
六、跑起来,打包
- Android手机打开开发者模式连接电脑,Android Studio
Run 'app'
,测试应用是否正常。 - Android Studio
Build > Generate Signed Bundle / APK
打包应用。
后续版本更新
以后的更新基本上就是重复第五、六步即可,外加修改版本号。