哈喽哈,我是小王子,最近写了一个网页套壳的APP,用的技术是java+hbuild+android studio,整体来说还是很费事的因为它也的确很费事会有许多坑坑坑了啦

  1. 首要我们要在电脑上装置一些东西,首要java包要用jre1.8.0\_201或之前的包,之后的包不会生成md5的密钥哦,嘿嘿
  2. 其次我这边装置的是android-studio-2021.1.1.22-windows这个版别的东西,自行去找资源,假如找不到能够来找我安慰你
  3. hbuild版别用最新的就能够这儿不做要求了哦
  4. 没有第四条了,这儿我为什么要写第四条呢,因为随手打下来的

一、装置android studio

一般来说呢直接装置就能够了呢,可是进去了之后会遇到许多问题,可是呢这些问题大部分是一个原因,没有装备呢镜像的原因

挑选autodetectproxy settings, 填maven.aliyun.com/nexus/conte…

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

然后关掉android studio后重开,根本就能够了呢,在2023.4.13日运用是能够的了

二、装置java并且产生一个秘钥

  1. 装置JRE环境(引荐运用JRE8环境,如已有可越过)

  2. 生成签名证书

    运用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要求这两个暗码共同),直接回车就能够

以上指令运转完结后就会生成证书,途径为你运转这段代码的文件下。

3.检查证书信息

能够运用以下指令检查:

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    
         SHA1: BB:AC:E2:2F:97:3B:18:02:E7:D6:69:A3:7A:28:EF:D2:3F:A3:68:E7    
         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    
Signature algorithm name: SHA256withRSA    
Subject Public Key Algorithm: 2048-bit RSA key    
Version: 3

其中证书指纹信息(Certificate fingerprints):

  • MD5
    证书的MD5指纹信息(安全码MD5)
  • SHA1
    证书的SHA1指纹信息(安全码SHA1)
  • SHA256
    证书的SHA256指纹信息(安全码SHA245)

三、生成app的那个有必要要用的key

  1. 去dclioud的官方开发者的官网(dev.dcloud.net.cn/pages/app/l…
  2. 找到你的使用
  3. 点击你的使用称号
  4. 点击各平台信息选项
  5. 在修正里边填上第二部生成的那些东西
  6. 在离线打包里边检查你的app的key
  7. 这个key很有用的记得记一下

四、运转你的安卓app呢

一、生成本地打包APP资源

HBuilderX菜单:发行=》原生app本地打包=》生成本地打包APP资源; 生成的资源后面用到

预备工程

一:新建工程

打开Android studio新建一个空白项目

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

挑选 Empty Activity 点击 Next。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

Minimum API Level 主张选21及以上

Package name作为使用标志,涉及请求第三方平台账号,一般状况下不主张修正,包名一般设置反向域名,如:io.dcloud.HBuilder

点击 Finish 完结创立

二:导入工程

2.7.0之后提供HBuilder-Integrate-AS工程,能够直接导入HBuilder-Integrate-AS工程,直接运转simpleDemo项目即可。

三:预备工作

  1. HBuilder-Integrate-AS仿制到项目文件夹;
  2. 左上角把Android切换为Project(下图);

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

  1. 把第一步打包好的资源放到\simpleDemo\src\main\assets\apps内;
  2. \simpleDemo\src\main\assets\datadcloud_control.xml的appid改为自己的;
  3. \simpleDemo\src\main\res\drawable的图标改为自己的,splash则能够右键创立 .9 启动图(splash.png和splash.9.png只能保存一个);
  4. \simpleDemo\src\main\res\values\strings.xml的app称号改为自己的,这个会显示在手机桌面;
  5. 要点修正文件\app\src\main\AndroidManifest.xml
把manifest节点的package特点改为自己项目的包名;
查找dcloud_appkey,把下一行的value值改为dcloud开发者后台生成的appkey;
  1. 增加权限:在application节点前,与application节点并排:
 例如:(也便是uniapp项目的装备文件manifest.json里边的权限permission那一坨)
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  1. 装备build.gradle,在app(simpleDemo)目录下:
defaultConfig: applicationId包名
versionCode版别号code
versionName版别号 
signingConfigs:装备证书相关信息
  1. 装备keystore,build.gradle文件的android节点下装备如下:
signingConfigs {
        config {
            keyAlias '签名别号'
            keyPassword '签名暗码'
            storeFile file('xxx/xxx/xxx.keystore或xxx/xxx/xxx.jks') // 路劲为相对途径或绝对途径
            storePassword '暗码'
            v1SigningEnabled true //兼容v1
            v2SigningEnabled true //兼容v2
        }
}
buildTypes {
        debug {
            signingConfig signingConfigs.config
            ...
        }
        release {
            signingConfig signingConfigs.config
            ...
        }
}

项目装备都正确怎样还是提示”未装备AppKey或装备过错”?

这种状况不用置疑。还是装置包的信息与你在请求Appkey填写信息不符导致的。 appid+使用包名+签名sha1三者有必要与请求填写的信息共同才能够的。

android平台 能够按以下过程检查一下离线项目装备:

  1. 检查签名文件是否装备到了主APP的build.gradle,装备方式参阅上面常见问题1。注意:需求将signingConfigs增加到buildTypes才会生效
  2. 检查离线项目中dcloud_control.xml文件中的appid是否与请求AppKey时的appid共同。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤
3. 检测离线项目的包名是否请求AppKey时的包名是否共同。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

  1. 比照装置包apk文件的SHA1是否与使用后台装备的SHA1共同。
  • Android studio调试时提示appkey装备过错,参阅文档获取签名信息与后台装备SHA1比照是否共同。
  • 生成正式包时提示appkey装备过错,获取装置包apk文件获取(签名参阅下面问题4)与后台装备SHA1比照是否共同。
  1. 检查dcloud_appkey装备位置是否正确,dcloud_appkey必定要放到Androidmanifest.xml文件的application节点里。
	<application>
        <meta-data
            android:name="dcloud_appkey"
            android:value="替换为自己请求的Appkey" />
	</application>

五、运转你的安卓app呢出现的问题

1.你的安卓运转图标完全不急毛亮,一直是灰色的我去贼厉害了呢,点击工具栏的SyncProject with Gradle Files按钮

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

点击按钮后会开端同步Gradle,下载一些相关的东西,若同步后有报错就把相关过错修复后再重新同步一次

六、打包输出你的安卓apk的安卓包子

  1. 经过签名jks来试试,点击导航栏的Build→Generate Signed Bundle / APK…

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

Next

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

这儿需求一个商店的key,因为没有,所以创立一个新的,点击Create new…

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

首要指明生成的jks文件的途径,点击这个文件夹图标。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

然后命名jks的称号为GenerateAPK,然后点击OK。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

然后输入这个jks和别号的一些相关信息,上方的商店暗码和别号暗码能够设置为相同的,这样便于回忆,只不过安全系数就降低了。我上面设置的是123456,信息都设置好了之后,点击OK。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

假如出现这个弹窗,你能够不用担心,点击OK。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

这儿勾选上记住暗码。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

挑选release,下面两个都勾选上,然后点击Finish。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

当你看到屏幕的右下角出现这个提示时,说明你的APK现已生成了,你能够在你的app下看到多了一个release的文件夹,里边便是app-release.apk包,下面你能够仿制发到手机上,然后下载,手机上是能够装置的。

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

三、打包的细节优化

从上面的操作中,你现已知道了一些内容,而在根本的开发中也是会用到的,而为了更好差异不同的包名,常用会给apk进行一个重命名,让你一眼就知道这个apk是哪个项目的。

① 自定义Apk姓名

修正app下的build.gradle

// 自定义打包称号
android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "GenerateAPK_${buildType.name}_v${versionName}.apk" } }

增加位置如下图所示

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

  1. 以上apk打包参阅 blog.csdn.net/qq\_3843621…

七、装置中文的android studio

1.点击下方卡片进入IntelliJ Platform插件页面

Chinese (Simplified) Language Pack / 中文语言包 – IntelliJ IDEs Plugin | Marketplace

2.点击,这儿必定要装置和你匹配的中文包必定

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

3.点击download

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

4.打开刚刚下载的zip,解压

5.按下图操作

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

6.找到刚刚解压的jar文件,点击OK

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

  1. 点击,挑选

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

在弹出的界面,单击plugins

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

查找chinese,下载第二个

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

关于uni-app离线打包安卓应用的详细到坑坑都踩了的大步骤

  1. 重启

  2. 以上录入与www.zhihu.com/tardis/zm/a…

感谢收看,哈哈哈哈,下次我再分享如何将base64的图片改为file格式类型