確實走了不少彎路陋桂,填了不少坑逆趣,為了防止老年健忘癥的復發(fā)。在這里記錄下來嗜历,也方便有緣人宣渗,結(jié)個善緣。
第一步梨州,創(chuàng)建 【SHA1】安全碼 參考
- 安裝java環(huán)境 痕囱,下載jdk 安裝 并配置下環(huán)境變量...(此處省略1萬字)
- cmd 或 git 控制臺輸入創(chuàng)建key的命令,創(chuàng)建證書
testalias: 證書別名(自定義)
test.keystore 證書文件名(自定義)
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
git下 在哪里創(chuàng)建證書暴匠, 證書就創(chuàng)建在哪里
- 查看keystore ,git下 在哪里創(chuàng)建證書鞍恢, 證書就創(chuàng)建在哪里
keytool -list -v -keystore test.keystore
Enter keystore password: //輸入密碼,回車
第二步每窖,配置打包項目
-
uniapp官方android打包文檔帮掉,下載打包環(huán)境
- 安裝 andro studio
- 下載 最新 android平臺 sdk
- 安裝 HBuilderX
-
將下載的SDK文件解壓,只有紅圈的兩個有用
-
打開 android studio
官方文檔有兩種打包方式岛请,這里使用官方提供的第二種方式旭寿,
HBuilder-Integrate-AS
是已經(jīng)配置好的打包項目,用Android Studio 引入該項目-
打開之后發(fā)現(xiàn)下載
gradle-6.5-bin.zip
文件很慢崇败, 點擊左下角紅色方塊取消下載盅称, 點擊紅圈處的鏈接手動下載文件。
下載
gradle-6.5-bin.zip
完成后室,將該文件放在任意目錄缩膝,一般都放在項目公共配置的目錄里 比如 maven jdk 等。在項目下的 gradle/wrapper/gradle-wrapper.properties 中設置一下
distributionUrl=file:///D:/文件存放目錄/gradle-6.5-bin.zip
-
選擇
File
->Sync project with Gradle Files
-
安裝成功后
Buid
->Build Bundle(s) / APK(s)
可以看到岸霹,否則是沒有此項的疾层,這是之后打包用的
-
修改以下兩處包名,后面使用HBuilderX中項目manifest.json中的uni-app的唯一標識(AppID)UNIXXXXXX
io.dcloud.UNIXXXXXX
-
有了 SHA1 和包名 去申請 高德地圖的 key
- HBuilderX 項目 amifest.json 設置高德地圖的key
選擇發(fā)行
->原生App 本地打包
->生成本地打包app資源
-
將本地打包文件拷貝到下圖目錄中
-
修改 data/dcloud_control.xml 文件中的 appid 保持一致
按照官方文檔 將 sdk目錄下的 3個包拷貝到libs 目下 具體作用看官文
- uniapp-v8-release.aar // uniapp 用
- `amap-libs-release.aar` // 高德地圖用
- `geolocation-amap-release.aar` //高德地圖用
- 官文
AndroidManifest.xml
中填入
<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_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
// 注釋的這段標識在它的前面加入上面的代碼
<!-- <application-->
<!-- android:allowBackup="true"-->
<!-- android:allowClearUserData="true"-->
<!-- android:icon="@drawable/icon"-->
<!-- android:label="@string/app_name"-->
<!-- android:largeHeap="true"-->
<!-- android:supportsRtl="true">-->
// 下面的代碼加入application 之后
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="高德申請的key寫在這里"></meta-data>
<service android:name="com.amap.api.location.APSService"></service>
- 另外 注意 在
AndroidManifest.xml
中
android:authorities="io.dcloud.UNICXXXXXX.dc.fileprovider"
一樣 改成一致的包名
<provider
android:name="io.dcloud.common.util.DCloud_FileProvider"
android:authorities="io.dcloud.UNICXXXXXX.dc.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/dcloud_file_provider" />
</provider>
-
build.gradle
中 加入自定義的證書簽名代碼贡避,否則手機安裝apk后無法定位
會提示 key 錯誤
證書簽名同樣也可以在File
->Project Structure...
中配置
第三步痛黎, 配置完成
執(zhí)行 `Buid` -> `Build Bundle(s) / APK(s)` -> `Build APK(s) ` 安裝到手機測試吧