Uni-App Android 本地打包

Uni-App Android 本地打包

基本配置

Hbuilder X 版本 3.1.18.20210609

Android Studio 版本 4.2.2

Jre 版本 1.8.0_291

App离线SDK 根据 Hbuilder X 自行下载

3.1.10版本起需要 申请Appkey

申请 Appkey 需要 生成Android平台签名证书(.keystore)

简单生成一个签名证书

使用 cmd 添加当前临时环境变量 path

set PATH=%PATH%;"C:\Program Files\Java\jre1.8.0_291\bin"

使用 keytool -genkey 生成一个证书

keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
# testalias 是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
# test.keystore 是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
# 36500 是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期

回车后提示

Enter keystore password:  # 输入证书文件密码,输入完成回车  
Re-enter new password:   # 再次输入证书文件密码,输入完成回车  
What is your first and last name?  
  [Unknown]:  # 输入名字和姓氏,输入完成回车  
What is the name of your organizational unit?  
  [Unknown]:  # 输入组织单位名称,输入完成回车  
What is the name of your organization?  
  [Unknown]:  # 输入组织名称,输入完成回车  
What is the name of your City or Locality?  
  [Unknown]:  # 输入城市或区域名称,输入完成回车  
What is the name of your State or Province?  
  [Unknown]:  # 输入省/市/自治区名称,输入完成回车  
What is the two-letter country code for this unit?  
  [Unknown]:  # 输入国家/地区代号(两个字母),中国为CN,输入完成回车  
Is CN=XX, OU=XX, O=XX, L=XX, ST=XX, C=XX correct?  
  [no]:  # 确认上面输入的内容是否正确,输入y,回车  

Enter key password for <testalias>  
        (RETURN if same as keystore password):  
        # 确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以
注意:上述信息填写要规范,乱填有可能会影响应用上架应用市场。

可通过 keytool -list -v -keystore <证书名称> 查看证书信息

keytool -list -v -keystore test.keystore  
Enter keystore password: # 输入密码,回车
Keystore type: PKCS12    
Keystore provider: SUN    

Your keystore contains 1 entry    

Alias name: test    
Creation date: 2019-10-28    
Entry type: PrivateKeyEntry    
Certificate chain length: 1    
Certificate[1]:    
Owner: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN    
Issuer: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN    
Serial number: 7dd12840    
Valid from: Fri Jul 26 20:52:56 CST 2019 until: Sun Jul 02 20:52:56 CST 2119    
Certificate fingerprints:    
         MD5:  F9:F6:C8:1F:DB:AB:50:14:7D:6F:2C:4F:CE:E6:0A:A5    # 证书的MD5指纹信息(安全码MD5)
         SHA1: BB:AC:E2:2F:97:3B:18:02:E7:D6:69:A3:7A:28:EF:D2:3F:A3:68:E7    # 证书的SHA1指纹信息(安全码SHA1)
         SHA256: 24:11:7D:E7:36:12:BC:FE:AF:2A:6A:24:BD:04:4F:2E:33:E5:2D:41:96:5F:50:4D:74:17:7F:4F:E2:55:EB:26  
         # 证书的SHA256指纹信息(安全码SHA245)  
Signature algorithm name: SHA256withRSA    
Subject Public Key Algorithm: 2048-bit RSA key    
Version: 3
SHA1指纹信息 在申请 Appkey 需要用到
准备项目(参考
打开 android studio 创建一个空白项目在这里插入图片描述

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

  • package name 对应 Android 包名

  • 使用 Java 进行创建

切换到 Project

在这里插入图片描述

打开 下载好的 SDK 3.1.18\Android-SDK@3.1.18.80859_20210610\HBuilder-Integrate-AS\simpleDemo\libs 将包复制到 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'

出现红色波浪线
在这里插入图片描述

右键项目 选择

在这里插入图片描述

确定后,点击 Do Refactor 即可

在这里插入图片描述

然后 在 android 中添加
aaptOptions {
    additionalParameters '--auto-add-overlay'
    ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
}
配置 Androidmanifest.xml

在这里插入图片描述

<application></application> 中加入

<meta-data android:name="dcloud_appkey" android:value="申请的 Appkey"></meta-data>

新建的项目默认会有一个MainActivity的节点,必须删掉!

<!-- 删掉 -->
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<!-- 替换上 -->
<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} 更换为当前应用的包名

在这里插入图片描述

生成本地资源
生成本地资源在项目中右键

在这里插入图片描述

打包完成后会生成一个本地资源,这里我使用的是 SDK 自带的 simpleDemo 下的资源

在这里插入图片描述

将资源按照 simpleDemo 的路径放到项目中

在这里插入图片描述

同时将 SDK 里的 data 加入到项目中

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

修改 data 文件夹下的 dcloud_control.xml

将 appid 改为与本地资源 manifest.json 中的 id 一致

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

配置 build.gradle

回到 app -> build.gradle

查看 android -> defaultConfig

在这里插入图片描述

versionCode为应用的版本号(整数值),用于各应用市场的升级判断,建议与manifest.json中version -> code值一致

versionName为应用的版本名称(字符串),在系统应用管理程序中显示的版本号,建议与manifest.json中version -> name值一致。

applicationId为应用的包名,一般设置为反向域名,不建议修改。

建议将targetSdkVersion设置为25或以上。

App离线SDK minSdkVersion最低支持21,小于21在部分5.0以下机型上将无法正常使用。

在这里插入图片描述

  • 100 对应 1
  • 1.0.0 对应 1.0
配置最上级目录的 build.gradle

在这里插入图片描述

在这两个位置分别加上 镜像

在这里插入图片描述

// 添加的阿里云镜像
maven{ url "http://maven.aliyun.com/nexus/content/groups/public/" }
maven{ url "http://maven.aliyun.com/nexus/content/groups/repositories/jcenter/" }
配置 strings.xml文件

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

在这里插入图片描述

配置图标
右键打开 res

在这里插入图片描述

上传图片,调整

在这里插入图片描述

next -> finish

将加载图片命名为 splash.png 放到 drawable 文件夹中

在这里插入图片描述

如出现拉伸情况可 参考

打包 apk
打开 Generate Signed Bundle or APK 选择 apk

在这里插入图片描述

在这里插入图片描述

Next

在这里插入图片描述

选择先前生成的 .keystore文件 输入别名、密码

在这里插入图片描述

Next

在这里插入图片描述

完成打包

在这里插入图片描述

点击 local 进入 release

在这里插入图片描述

检查 apk

复制一份 apk

改后缀名为 zip

进入解压包

将 META-INF/CERT.RSA 解压出来

使用

keytool -printcert -file CERT.RSA

注意是否设置了 jre 环境变量

查看 SHA1 是否与 .keystore 一致,不一致可能要查看是否配置错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值