Android Studio运行、离线打包uni-app项目
<div>首先需要下载Android Studio<br>下载HBuilderX<br>下载Android离线打包SDK(https://nativesupport.dcloud.net.cn/AppDocs/download/android)</div><div><ol>
<li> 创建android项目</li>
</ol>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317095834562-1733064277.png"></p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317095951318-968727626.png"></p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100022404-569479785.png"> </p>
<p> 2. 配置项目</p>
<div>
<div> 将Android离线打包SDK中的lib.5plus.base-release.aar、android-gif-drawable-release@.arr、uniapp-v8-release.aar、oaid_sdk_.aar拷贝到android项目的app的libs中(为你下载的最新的版本号)</div>
</div>
<div> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100235459-989441244.png">
<p> </p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100303198-1180105824.png"></p>
<p> </p>
<p> </p>
</div>
<p> 打开app -> build.gradle<br> 在android下面添加</p>
<p> </p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">aaptOptions {
additionalParameters '--auto-add-overlay'
ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
}
</pre>
</div>
<p> 在dependencies下面添加</p>
<p> </p>
<div class="cnblogs_code">
<pre>implementation fileTree(dir: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">libs</span><span style="color: rgba(128, 0, 0, 1)">'</span>, include: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">*.aar</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">*.jar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">], exclude: [])
implementation </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">com.github.bumptech.glide:glide:4.11.0</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
implementation </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">com.alibaba:fastjson:1.1.46.android</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
implementation </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">com.google.code.gson:gson:2.8.6</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
implementation </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">com.facebook.fresco:fresco:1.13.0</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
implementation </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">com.facebook.fresco:animated-gif:1.13.0</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
implementation </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">androidx.recyclerview:recyclerview:1.1.0</span><span style="color: rgba(128, 0, 0, 1)">'</span></pre>
</div>
<p> 打开app -> src -> main -> AndroidManifest.xml将默认生成在application标签内的全部注释</p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100505585-1724307033.png"></p>
<p> </p>
<p> 在application内添加</p>
<div class="cnblogs_code">
<pre><<span style="color: rgba(0, 0, 0, 1)">activity
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">io.dcloud.PandoraEntry</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:configChanges</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">orientation|keyboardHidden|keyboard|navigation</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:label</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@string/app_name</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:launchMode</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">singleTask</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:hardwareAccelerated</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">true</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:theme</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@style/TranslucentTheme</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:screenOrientation</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">user</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:windowSoftInputMode</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">adjustResize</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
</span><intent-filter><span style="color: rgba(0, 0, 0, 1)">
</span><<span style="color: rgba(0, 0, 0, 1)">action
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.intent.action.MAIN</span><span style="color: rgba(128, 0, 0, 1)">"</span>/><span style="color: rgba(0, 0, 0, 1)">
</span><<span style="color: rgba(0, 0, 0, 1)">category
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.intent.category.LAUNCHER</span><span style="color: rgba(128, 0, 0, 1)">"</span>/><span style="color: rgba(0, 0, 0, 1)">
</span></intent-filter><span style="color: rgba(0, 0, 0, 1)">
</span></activity>
<<span style="color: rgba(0, 0, 0, 1)">activity
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">io.dcloud.PandoraEntryActivity</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:launchMode</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">singleTask</span><span style="color: rgba(128, 0, 0, 1)">"</span> android:configChanges=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:hardwareAccelerated</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">true</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:permission</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">com.miui.securitycenter.permission.AppPermissionsEditor</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:screenOrientation</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">user</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:theme</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@style/DCloudTheme</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:windowSoftInputMode</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">adjustResize</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
</span><intent-filter><span style="color: rgba(0, 0, 0, 1)">
</span><<span style="color: rgba(0, 0, 0, 1)">category
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.intent.category.DEFAULT</span><span style="color: rgba(128, 0, 0, 1)">"</span>/><span style="color: rgba(0, 0, 0, 1)">
</span><<span style="color: rgba(0, 0, 0, 1)">category
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.intent.category.BROWSABLE</span><span style="color: rgba(128, 0, 0, 1)">"</span>/><span style="color: rgba(0, 0, 0, 1)">
</span><<span style="color: rgba(0, 0, 0, 1)">action
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.intent.action.VIEW</span><span style="color: rgba(128, 0, 0, 1)">"</span>/><span style="color: rgba(0, 0, 0, 1)">
</span><<span style="color: rgba(0, 0, 0, 1)">data
android:scheme</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">h56131bcf</span><span style="color: rgba(128, 0, 0, 1)">"</span>/><span style="color: rgba(0, 0, 0, 1)">
</span></intent-filter>
</activity>
<!--provider节点必须添加--><span style="color: rgba(0, 0, 0, 1)">
</span><<span style="color: rgba(0, 0, 0, 1)">provider
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">io.dcloud.common.util.DCloud_FileProvider</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:authorities</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">${apk.applicationId}.dc.fileprovider</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:exported</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">false</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:grantUriPermissions</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">true</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
</span><meta-<span style="color: rgba(0, 0, 0, 1)">data
android:name</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">android.support.FILE_PROVIDER_PATHS</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
android:resource</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@xml/dcloud_file_provider</span><span style="color: rgba(128, 0, 0, 1)">"</span>/>
</provider></pre>
</div>
<p> </p>
<p> 注意:要将provider中的${apk.applicationId}修改为你的应用包名。可以在AndroidManifest.xml的跟标签下查看 </p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100617386-964576529.png"></p>
<p> </p>
<p> 创建asstes文件夹</p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100639003-259079601.png"></p>
<p> </p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100647095-881198463.png"></p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100702476-127800612.png"></p>
<p> </p>
<p> </p>
<p> </p>
<p> 将Android离线打包SDK中assets下的data拷贝到项目中新建好的assets下<br> HBuilderX导出项目</p>
<div class="image-package"> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100731445-1109618001.png">
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100738867-384010924.png"></p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100757325-325399500.png"></p>
<p> <span style="font-style: italic">将导出的__UNI__E085701文件夹拷贝到项目中assets文件夹下(这个文件夹名是uni-app的appId,不是固定的! 不是固定的! 不是固定的!)</span></p>
<div>
<div> 打开项目app -> src -> main -> assets -> data -> dcloud_control.xml将appid改为自己导出的appid。</div>
</div>
</div>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100836335-1895397946.png"></p>
<p> </p>
<p> 3. 运行</p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317100953989-757515264.png"></p>
<p> </p>
<p> 4. 遇到问题</p>
<p> 1) Android Studio编译报错:Error: Invoke-customs are only supported starting with Android O (--min-api 26)</p>
<p> build.gradle文件中android节点下增加:</p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317101126461-1864551049.png"></p>
<p> </p>
<p> 2) Android Studio编译出现Installed Build Tools revision 31.0.0 is corrupted解决方法 </p>
<p> 设置步骤:</p>
<ol>
<li>顶部栏选Tools</li>
<li>SDK Manager</li>
<li>去除Android API 31的勾选并apply</li>
<li>按需勾选SDK Platforms,如Android 11.0®,并apply</li>
</ol>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317101427066-400765837.png"> </p>
<h2> <span style="font-family: 仿宋">设置build.gradle文件</span></h2>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317101444196-185035587.png"></p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317101613853-733148955.png"></p>
<p> </p>
<p> 3) Compatible side by side NDK version was not found.</p>
<p> <code>File</code>-><code>Settings</code>-><code>Appearance...</code>-><code>Android SDK</code>-><code>SDK Tools</code>-><code>NDK(Side by side)</code>-><code>Apply</code></p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317101657674-245189826.png"></p>
<p> 5. 打包</p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317101942301-1570194204.png"></p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317101953363-868699103.png"></p>
<p> 点击打开打包之后apk存放的文件夹。目录为app -> build -> outputs -> apk -> debug</p>
<p> <img src="https://img2022.cnblogs.com/blog/1050391/202203/1050391-20220317102006165-1233436388.png"></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
</div>
<div id="MySignature" role="contentinfo">
深度思考,全面总结,综合发展!!<br><br>
来源:https://www.cnblogs.com/strivegys/p/16016124.html
頁:
[1]