前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >uniapp下载apk并且安装(uniapp打包后apk白屏)

uniapp下载apk并且安装(uniapp打包后apk白屏)

作者头像
全栈程序员站长
发布2022-08-01 15:21:38
5.8K0
发布2022-08-01 15:21:38
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

本文使用cli 方式

一、Android原生配置

官方文档

0 安装开发环境

必备软件:
申请 Appkey
  • 登录开发者中心。如果没有账号,就注册一个。申请Appkey需要进行邮箱和手机号的实名认证。
  • 在左侧菜单中选择我创建的应用,点击应用
  • 左侧选择离线打包Key管理,选择对应平台 iOS Android,输入包名和SHA1 (包名是自定义的,SHA1获取),确认无误点击保存,即可获取到对应平台的App.

替换 xxx为你的名称

代码语言:javascript
复制
// 生成 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如下:

代码语言:javascript
复制
    <application>
        <meta-data
            android:name="dcloud_appkey"
            android:value="替换为自己申请的Appkey" />
    </application>        

iOS 点击链接参考IOS平台的配置Appkey章节.

二、导出App资源

查看版本

!!! 首先请确保uni-app编译器的版本号和离线 SDK 的版本号一致。 如果版本不一致,app启动时会弹出版本不一致的提示框

  1. 通过 HBuilder X 创建的项目 帮助 —— 关于
在这里插入图片描述
在这里插入图片描述
  1. 通过 Vue Cli 创建的项目 cmd命令行 cd 到项目的根目录,执行 npm run info
在这里插入图片描述
在这里插入图片描述

3.1.18是它的版本, 那么在上面下载小程序sdk版本时,也要选择3.1.18的版本。

在这里插入图片描述
在这里插入图片描述

三、生成本地打包 APP 资源

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 的方法:

  1. 打开 HBuilderX ,文件 —— 导入 —— 从本地目录导入,将项目导入进来
在这里插入图片描述
在这里插入图片描述
  1. 打开 src 目录,点击 manifest.json,点击基础配置右边的重新获取
在这里插入图片描述
在这里插入图片描述

登录开发者中心,查看AppKey是否生成了,以及包名是否为空。如果没有AppKey,那么要填写下面的内容,生成。

在这里插入图片描述
在这里插入图片描述

重新运行npm run build:app-plus,生成新的app-plus内容,替换之前的www文件夹里的内容,并且打开里面的manifest.json 应该能看到id已经变成重新获取的appid了。

在这里插入图片描述
在这里插入图片描述

四、导入Android Studio

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目录下

代码语言:javascript
复制
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视图。复制下面的代码到appbuild.gradle 里,

在这里插入图片描述
在这里插入图片描述

dependencies 下面添加代码:

代码语言:javascript
复制
 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

代码语言:javascript
复制
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. 如下:

代码语言:javascript
复制
<application>
  <meta-data android:name="dcloud_appkey" android:value="替换为自己申请的Appkey" />
</application>
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置应用启动页及provider节点 Androidmanifest.xml

  • 删掉自动生成的 MainActivity 节点,如下图部分
在这里插入图片描述
在这里插入图片描述

同时删除项目里的 MainActivity 类,不需要了。

  • 复制如下代码到 application 节点里
代码语言:javascript
复制
<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} 必须替换成当前应用的包名. 替换后: 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.gradlebuildTypes 上面添加如下代码:

代码语言:javascript
复制
signingConfigs { 
   
        config { 
   
            keyAlias 'dnpic'   // 在1.0步骤生成keystore文件时定义的别名
            keyPassword 'carrie'  // keystore 密码
            storeFile file('E:/WebDevelopment/dnpic/dnpic.keystore')  // keystore 本地存储路径,用 斜杠 /
            storePassword 'carrie'  // keystore 密码
        }
    }

修改buildTypes - release :

代码语言:javascript
复制
    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

点击 运行 .

在这里插入图片描述
在这里插入图片描述

五、打包签名apk

Build – Generate Signed Bundle / Apk

在这里插入图片描述
在这里插入图片描述

选择 APK

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择release , 选中 V1 V2

在这里插入图片描述
在这里插入图片描述

成功后,在 app\release 目录下,看到生成的apk.

(optional) 重写Application

如果集成离线SDK时需要重写application (不需要则跳过这一步),必须继承自DCloudApplication,否则会导致SDK中业务逻辑无法正常运行。

新建一个Java类 MyApplication:

代码语言:javascript
复制
class MyApplication extends DCloudApplication { 
   

    @Override
    public void onCreate() { 
   
        super.onCreate();
    }
}

MyApplication 配置到Androidmanifest.xml中(如下): 在 application 节点中添加代码:

代码语言:javascript
复制
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://javaforall.cn/125863.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Android原生配置
    • 0 安装开发环境
    • 二、导出App资源
      • 查看版本
        • 2. 通过 vue-cli 创建的项目
        • 0 新建Android项目
        • 1 导入资源
        • 2. 配置签名信息
    • 三、生成本地打包 APP 资源
    • 四、导入Android Studio
    • 五、打包签名apk
      • (optional) 重写Application
        • FAQ
        相关产品与服务
        云开发 CloudBase
        云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档