1、下载sdk——Android-SDK@3.1.13.80836_20210517
https://nativesupport.dcloud.net.cn/AppDocs/download/android
2、复制sdk包中的demo工程HBuilder-HelloUniApp到任意目录,使用android studio打开HBuilder-HelloUniApp
3、将Android-SDK@3.1.13.80836_20210517\SDK\libs中lib.5plus.base-release.aar、android-gif-drawable-release@1.2.17.aar、uniapp-v8-release.aar和oaid_sdk_1.0.25.aar拷贝到demo工程的app/libs目录下
4、Hbuilder,发行-原生App-本地打包-生成本地打包APP资源。将生成的目录\unpackage\resources\__UNI__ECBD83A复制到android studio的demo工程的src\main\assets\apps下。
生成本地打包APP资源。Hbuilder本地打包生成的包如下:
将Hbuilder生成的包放到HBuilder-HelloUniApp项目中
5、在uniapp官网https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey 获取appID下的项目的appKey
其中SHA1填写获取的证书的签名。包名与src\main\AndroidManifest.xml的package值、build.gradle的applicationId值一致
5、将src\main\assets\data\dcloud_control.xml中的appid配置为生成资源的目录名(例如__UNI__ECBD83A)
6、signingConfigs配置证书 https://ask.dcloud.net.cn/article/35777
假设jre安装目录为“C:\Program Files\Java\jre1.8.0_201”
d: // 切换工作目录到D:路径 set PATH=%PATH%;"C:\Program Files\Java\jre1.8.0_201\bin" // 将jre命令添加到临时环境变量中
生成签名证书
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要求这两个密码一致),直接回车就可以
以上命令运行完成后就会生成证书,路径为“D:\test.keystore”
7、修改build.gradle
修改版本号、applicationId
apply plugin: 'com.android.application' android { compileSdkVersion 29 buildToolsVersion '28.0.3' defaultConfig { applicationId "io.dcloud.HelloH5" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" multiDexEnabled true ndk { abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a' } manifestPlaceholders = [ "apk.applicationId" : "com.android.HelloH5", "GETUI_APPID" : "unipush的appid", "plus.unipush.appid" : "unipush的appid", "plus.unipush.appkey" : "unipuish的appkey", "plus.unipush.appsecret": "unipush的secrety" ] compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } signingConfigs { config { keyAlias 'key0' keyPassword '123456' storeFile file('test.jks') storePassword '123456' v1SigningEnabled true v2SigningEnabled true } } buildTypes { debug { signingConfig signingConfigs.config minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } release { signingConfig signingConfigs.config minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { checkReleaseBuilds false abortOnError false } //使用uniapp时,需复制下面代码 /*代码开始*/ aaptOptions { additionalParameters '--auto-add-overlay' //noCompress 'foo', 'bar' ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~" } /*代码结束*/ } repositories { flatDir { dirs 'libs' } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(include: ['*.aar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' /*uniapp所需库-----------------------开始*/ implementation 'androidx.recyclerview:recyclerview:1.0.0' implementation 'com.facebook.fresco:fresco:2.5.0' implementation "com.facebook.fresco:animated-gif:2.5.0" /*uniapp所需库-----------------------结束*/ // 基座需要,必须添加 implementation 'com.github.bumptech.glide:glide:4.9.0' implementation 'com.alibaba:fastjson:1.1.46.android' }
8、Android打包
添加步骤6生成的证书test.keystore
打包完的apk在\app\release路径下