哈喽哈,我是小王子,最近写了一个网页套壳的APP,用的技术是java+hbuild+android studio,总体来说还是很麻烦的因为它也确实很麻烦会有很多坑坑坑了啦
- 首先我们要在电脑上安装一些东西,首先java包要用
jre1.8.0\_201或之前的包,之后的包不会生成md5的密钥哦,嘿嘿 - 其次我这边安装的是
android-studio-2021.1.1.22-windows这个版本的东西,自行去找资源,如果找不到可以来找我安慰你 - hbuild版本用最新的就可以这里不做要求了哦
- 没有第四条了,这里我为什么要写第四条呢,因为顺手打下来的
一、安装android studio
一般来说呢直接安装就可以了呢,但是进去了之后会遇到很多问题,但是呢这些问题大部分是一个原因,没有配置呢镜像的原因
选择auto detect proxy settings, 填maven.aliyun.com/nexus/conte…
然后关掉android studio后重开,基本就可以了呢,在2023.4.13日使用是可以的了
二、安装java并且产生一个秘钥
-
安装JRE环境(推荐使用JRE8环境,如已有可跳过)
-
生成签名证书
使用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
- 去dclioud的官方开发者的官网(dev.dcloud.net.cn/pages/app/l…
- 找到你的应用
- 点击你的应用名称
- 点击
各平台信息选项 - 在修改里面填上第二部生成的那些东西
- 在离线打包里面查看你的app的key
- 这个key很有用的记得记一下
四、运行你的安卓app呢
一、生成本地打包APP资源
HBuilderX菜单:发行=》原生app本地打包=》生成本地打包APP资源; 生成的资源后面用到
准备工程
一:新建工程
打开Android studio新建一个空白项目
选择 Empty Activity 点击 Next。
Minimum API Level 建议选21及以上
Package name作为应用标志,涉及申请第三方平台账号,一般情况下不建议修改,包名一般设置反向域名,如:io.dcloud.HBuilder
点击 Finish 完成创建
二:导入工程
2.7.0之后提供HBuilder-Integrate-AS工程,可以直接导入HBuilder-Integrate-AS工程,直接运行simpleDemo项目即可。
三:准备工作
- 把
HBuilder-Integrate-AS复制到项目文件夹; - 左上角把
Android切换为Project(下图);
- 把第一步打包好的资源放到
\simpleDemo\src\main\assets\apps内; - 把
\simpleDemo\src\main\assets\data的dcloud_control.xml的appid改为自己的; - 把
\simpleDemo\src\main\res\drawable的图标改为自己的,splash则可以右键创建 .9 启动图(splash.png和splash.9.png只能保留一个); - 把
\simpleDemo\src\main\res\values\strings.xml的app名称改为自己的,这个会显示在手机桌面; 重点修改文件\app\src\main\AndroidManifest.xml
把manifest节点的package属性改为自己项目的包名;
搜索dcloud_appkey,把下一行的value值改为dcloud开发者后台生成的appkey;
- 添加权限:在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"/>
- 配置
build.gradle,在app(simpleDemo)目录下:
defaultConfig: applicationId包名
versionCode版本号code
versionName版本号
signingConfigs:配置证书相关信息
- 配置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平台 可以按以下步骤检查一下离线项目配置:
- 查看签名文件是否配置到了主APP的build.gradle,配置方式参考上面常见问题1。注意:需要将signingConfigs添加到buildTypes才会生效
- 查看离线项目中dcloud_control.xml文件中的appid是否与申请AppKey时的appid一致。
3. 检测离线项目的包名是否申请AppKey时的包名是否一致。
- 对比安装包apk文件的SHA1是否与应用后台配置的SHA1一致。
- Android studio调试时提示appkey配置错误,参考文档获取签名信息与后台配置SHA1对比是否一致。
- 生成正式包时提示appkey配置错误,获取安装包apk文件获取(签名参考下面问题4)与后台配置SHA1对比是否一致。
- 检查dcloud_appkey配置位置是否正确,dcloud_appkey一定要放到Androidmanifest.xml文件的application节点里。
<application>
<meta-data
android:name="dcloud_appkey"
android:value="替换为自己申请的Appkey" />
</application>
五、运行你的安卓app呢出现的问题
1.你的安卓运行图标完全不急毛亮,一直是灰色的我去贼厉害了呢,点击工具栏的Sync Project with Gradle Files按钮
点击按钮后会开始同步Gradle,下载一些相关的东西,若同步后有报错就把相关错误修复后再重新同步一次
六、打包输出你的安卓apk的安卓包子
- 通过签名jks来试试,点击导航栏的Build→Generate Signed Bundle / APK…
Next
这里需要一个商店的key,因为没有,所以创建一个新的,点击Create new…
首先指明生成的jks文件的路径,点击这个文件夹图标。
然后命名jks的名称为GenerateAPK,然后点击OK。
然后输入这个jks和别名的一些相关信息,上方的商店密码和别名密码可以设置为一样的,这样便于记忆,只不过安全系数就降低了。我上面设置的是123456,信息都设置好了之后,点击OK。
如果出现这个弹窗,你可以不用担心,点击OK。
这里勾选上记住密码。
选择release,下面两个都勾选上,然后点击Finish。
当你看到屏幕的右下角出现这个提示时,说明你的APK已经生成了,你可以在你的app下看到多了一个release的文件夹,里面就是app-release.apk包,下面你可以复制发到手机上,然后下载,手机上是可以安装的。
三、打包的细节优化
从上面的操作中,你已经知道了一些内容,而在基本的开发中也是会用到的,而为了更好区别不同的包名,常用会给apk进行一个重命名,让你一眼就知道这个apk是哪个项目的。
① 自定义Apk名字
修改app下的build.gradle
// 自定义打包名称
android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "GenerateAPK_${buildType.name}_v${versionName}.apk" } }
添加位置如下图所示
- 以上apk打包参考 blog.csdn.net/qq\_3843621…
七、安装中文的android studio
1.点击下方卡片进入IntelliJ Platform插件页面
Chinese (Simplified) Language Pack / 中文语言包 - IntelliJ IDEs Plugin | Marketplace
2.点击,这里一定要安装和你匹配的中文包一定
3.点击download
4.打开刚刚下载的zip,解压
5.按下图操作
6.找到刚刚解压的jar文件,点击OK
- 点击,选择
在弹出的界面,单击plugins
搜索chinese,下载第二个
-
重启
感谢收看,哈哈哈哈,下次我再分享如何将base64的图片改为file格式类型