Android Studio執行、離線打包uni-app專案
下載HBuilderX
下載Android離線打包SDK(https://nativesupport.dcloud.net.cn/AppDocs/download/android)
- 建立android專案
2. 配置專案
將Android離線打包SDK中的lib.5plus.base-release.aar、android-gif-drawable-release@[x.y.z].arr、uniapp-v8-release.aar、oaid_sdk_[x.y.z].aar拷貝到android專案的app的libs中([x.y.z]為你下載的最新的版本號)
開啟app -> build.gradle
在android下面新增
aaptOptions { additionalParameters '--auto-add-overlay' ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~" }
在dependencies下面新增
implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) implementation 'com.github.bumptech.glide:glide:4.11.0' implementation 'com.alibaba:fastjson:1.1.46.android' implementation 'com.google.code.gson:gson:2.8.6' implementation 'com.facebook.fresco:fresco:1.13.0' implementation "com.facebook.fresco:animated-gif:1.13.0" implementation 'androidx.recyclerview:recyclerview:1.1.0'
開啟app -> src -> main -> AndroidManifest.xml將預設生成在application標籤內的全部註釋
在application內新增
<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>
注意:要將provider中的${apk.applicationId}修改為你的應用包名。可以在AndroidManifest.xml的跟標籤下檢視
建立asstes資料夾
將Android離線打包SDK中assets下的data拷貝到專案中新建好的assets下
HBuilderX匯出專案
將匯出的__UNI__E085701資料夾拷貝到專案中assets資料夾下(這個資料夾名是uni-app的appId,不是固定的! 不是固定的! 不是固定的!)
開啟專案app -> src -> main -> assets -> data -> dcloud_control.xml將appid改為自己匯出的appid。
3. 執行
4. 遇到問題
1) Android Studio編譯報錯:Error: Invoke-customs are only supported starting with Android O (--min-api 26)
build.gradle檔案中android節點下增加:
2) Android Studio編譯出現Installed Build Tools revision 31.0.0 is corrupted解決方法
設定步驟:
- 頂部欄選Tools
- SDK Manager
- 去除Android API 31的勾選並apply
- 按需勾選SDK Platforms,如Android 11.0®,並apply
設定build.gradle檔案
3) Compatible side by side NDK version was not found.
File
->Settings
->Appearance...
->Android SDK
->SDK Tools
->NDK(Side by side)
->Apply
5. 打包
點選開啟打包之後apk存放的資料夾。目錄為app -> build -> outputs -> apk -> debug