首先我们知道,Android和uni-app中写的代码是完全不一样的,他们的编译环境也是不一样的,呢么如何要在Androidstudio中调用uni-app中的代码呢?我们这边来准备几个步骤请看:

第一步:在Androidstudio中创建一个空的项目(这一步是必须或者可以创建一个demo)

第2步:下载hbuild打包apk的sdk(如图:此地址在hbuilder中的本地打包指南中可以直接进入,除了导入地图还有功能的使用等。。。)


这是sdk下载地方,但是需要的aar包和配置步骤我下面已经贴出,朋友们可以非必须下载sdk

第3步:将此aar拷贝libs的库到创建的android项目

(注意此arr包因为我暂时不知道如何上传文件所以只有名字,等我研究如何上传文件会再次添加非常抱歉。。。。)

android-gif-drawable-release@1.2.17.aar
lib.5plus.base-release.aar
msa_mdid_1.0.13.aar

第4步:4.拷贝此aar到libs中

uniapp-v8-release.aar

5.设置导入库和必要的三方依赖库

implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])implementation 'androidx.appcompat:appcompat:1.2.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.2'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test.ext:junit:1.1.2'androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'//noinspection GradleCompatibleimplementation "com.android.support:appcompat-v7:28.0.0"/*uniapp所需库-----------------------开始*/implementation 'com.android.support:recyclerview-v7:28.0.0'implementation 'com.facebook.fresco:fresco:1.13.0'implementation "com.facebook.fresco:animated-gif:1.13.0"/*uniapp所需库-----------------------结束*/// 基座需要,必须添加implementation 'com.github.bumptech.glide:glide:4.9.0'implementation 'com.alibaba:fastjson:1.1.46.android'

6.在主项目的moudle对应的build.gradle中配置

android{....aaptOptions {additionalParameters '--auto-add-overlay'  ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"  }}

7.在主项目的module对应的build.gradle中配置libs的包

记住是最外层

repositories {flatDir {dirs 'libs'}
}

8.在android项目中的main目录下创建一个assets,把data文件夹拷贝到刚刚创建的assets文件夹下

创建一个data文件夹内容为:

dcloud_control.xml:
(这一步appid是拿到hbuilder中的appid如图:)

<?xml version="1.0"?>
<hbuilder debug="true" syncDebug="true">
<apps><app appid="__UNI__0021D11" appver=""/>
</apps>
</hbuilder>

dcloud_error.html:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"/><meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/><meta name="HandheldFriendly" content="true"/><meta name="MobileOptimized" content="320"/><title>Error</title><script type="text/javascript">
// H5 plus事件处理
var ws=null;
function plusReady(){// Android处理返回键plus.key.addEventListener('backbutton',function(){(history.length==1)&&ws.close();var c=setTimeout(function(){ws.close();},1000);window.onbeforeunload=function(){clearTimeout(c);}history.go(-2);},false);ws=plus.webview.currentWebview();
}
if(window.plus){plusReady();
}else{document.addEventListener('plusready',plusReady,false);
}
document.addEventListener('touchstart',function(){return false;
},true);
// 禁止选择
document.oncontextmenu=function(){return false;
};
// 获取错误信息
document.addEventListener("error",function(e){info.innerText="请求的页面("+e.url+")无法打开";console.log("请求的页面无法打开:"+e.href);
},false);</script><style>
*{-webkit-user-select: none;
}
html,body{margin: 0px;padding: 0px;width: 100%;height: 100%;text-align: center;word-break: break-all;-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);
}
.button{width: 50%;font-size: 18px;font-weight: normal;text-decoration: none;text-align: center;padding: .5em 0em;margin: .5em auto;color: #333333;background-color: #EEEEEE;border: 1px solid #CCCCCC;-webkit-border-radius: 5px;border-radius: 5px;
}
.button:active{background-color: #CCCCCC;
}</style>
</head>
<body><div style="width:100%;height:20%;"></div><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 512 512" style="height:20%;width:30%"> <g id="icomoon-ignore"><line stroke-width="1" x1="" y1="" x2="" y2="" stroke="#449FDB" opacity=""></line></g><path d="M256 0c-141.385 0-256 114.615-256 256s114.615 256 256 256 256-114.615 256-256-114.615-256-256-256zM352 128c17.673 0 32 14.327 32 32s-14.327 32-32 32-32-14.327-32-32 14.327-32 32-32zM160 128c17.673 0 32 14.327 32 32s-14.327 32-32 32-32-14.327-32-32 14.327-32 32-32zM352.049 390.37c-19.587-32.574-55.272-54.37-96.049-54.37s-76.462 21.796-96.049 54.37l-41.164-24.698c27.98-46.535 78.958-77.672 137.213-77.672s109.232 31.137 137.213 77.672l-41.164 24.698z" fill="#666666"></path></svg><p style="font-size:18px;font-weight:bolder;">We're sorry ...</p><p id="info" style="font-size:12px;"></p><!--<div class="button" οnclick="history.back()">Retry</div>--><div class="button" onclick="if(history.length == 1){ws.close();}else{ws.back();ws.back();}">Back</div><div class="button" onclick="ws.close()">Close</div><div class="button" onclick="plus.runtime.restart()">Restart</div>
</body>
</html>

dcloud_properties.xml:

<properties><features><feature name="Barcode" value="io.dcloud.feature.barcode2.BarcodeFeatureImpl"/><feature name="Maps" value="io.dcloud.js.map.amap.JsMapPluginImpl"/><!--<feature name="Maps" value="io.dcloud.js.map.JsMapPluginImpl"/>--><feature name="Contacts" value="io.dcloud.feature.contacts.ContactsFeatureImpl"/><feature name="Messaging" value="io.dcloud.adapter.messaging.MessagingPluginImpl"/><feature name="Camera" value="io.dcloud.js.camera.CameraFeatureImpl"/><feature name="Console" value="io.dcloud.feature.pdr.LoggerFeatureImpl"/><feature name="Device" value="io.dcloud.feature.device.DeviceFeatureImpl"/><feature name="File" value="io.dcloud.js.file.FileFeatureImpl"/><feature name="Proximity" value="io.dcloud.feature.sensor.ProximityFeatureImpl"/><feature name="Storage" value="io.dcloud.feature.pdr.NStorageFeatureImpl"/><feature name="Cache" value="io.dcloud.feature.pdr.CoreCacheFeatureImpl"/><feature name="Invocation" value="io.dcloud.invocation.Invocation"/><feature name="Navigator" value="io.dcloud.feature.ui.navigator.NavigatorUIFeatureImpl"/><feature name="NativeUI" value="io.dcloud.feature.ui.nativeui.NativeUIFeatureImpl"/><feature name="UI" value="io.dcloud.feature.ui.UIFeatureImpl"><module name="Navigator" value="io.dcloud.feature.ui.NavView"/></feature><feature name="Gallery" value="io.dcloud.js.gallery.GalleryFeatureImpl"/><feature name="Downloader" value="io.dcloud.net.DownloaderFeatureImpl"/><feature name="Uploader" value="io.dcloud.net.UploadFeature"/><feature name="Zip" value="io.dcloud.feature.pdr.ZipFeature"/><feature name="Audio" value="io.dcloud.feature.audio.AudioFeatureImpl"/><feature name="Runtime" value="io.dcloud.feature.pdr.RuntimeFeatureImpl"/><feature name="VideoPlayer" value="io.dcloud.media.MediaFeatureImpl"/><feature name="LivePusher" value="io.dcloud.media.live.LiveMediaFeatureImpl"/><feature name="XMLHttpRequest" value="io.dcloud.net.XMLHttpRequestFeature"/><feature name="Statistic" value="io.dcloud.feature.statistics.StatisticsFeatureImpl"/><feature name="Accelerometer" value="io.dcloud.feature.sensor.AccelerometerFeatureImpl"/><feature name="Orientation" value="io.dcloud.feature.sensor.OrientationFeatureImpl"/><feature name="NativeObj" value="io.dcloud.feature.nativeObj.FeatureImpl"/>        <feature name="Geolocation" value="io.dcloud.js.geolocation.GeolocationFeatureImpl"/><feature name="Stream" value="io.dcloud.appstream.js.StreamAppFeatureImpl"/><feature name="plugintest" value="com.example.H5PlusPlugin.PGPlugintest"/></features><services><service name="push" value="io.dcloud.feature.aps.APSFeatureImpl"/><service name="Statistic" value="io.dcloud.feature.statistics.StatisticsBootImpl"/><service name="Downloader" value="io.dcloud.net.DownloaderBootImpl"/><!--<service name="Maps" value="io.dcloud.js.map.MapInitImpl"/>--></services>
</properties>

这边为你提供参考图片

9.在android项目中的assets目录下创建apps文件夹

10.在hbuild中发布打包apk的资源 发行->原生app本地打包->生成本地资源。 注意:生成的本地资源路径 项目根目录->unpackage->resouces

这边为您提供参考图片:

11.拷贝生成本地资源包到android项目 assets目录下的apps目录下

**注意:(拷贝的资源包名和appid的名字一致)**
**参考图片:**

12.修改android项目中assets目录下的data目录下的dcloud_control.xml中的appid为拷贝过来的appid的名字, 再修改dcloud_control.xml中根节点hbuilder为:(注意这个appid必须是你hbuilder项目的中的那个appid)

参考图片:

修改android项目的清单文件:

1)删除原来的默认启动activity

2)按xbuild官方提供的内容,拷贝以下内容到android项目的清单文件的下:

3) 配置权限 如:

    <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<activityandroid: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><activityandroid: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>

14.配置android studio的编译环境(注意我们studio各自的版本是不一样的所以有时候这些需要进行调整,比如第2步,如果这个版本报出依赖冲突的错误,直接换回到之前的版本第三不也需要进行一些调整,然后这里切出我的图来供大家参考注意底部!!!)

1)检查配置android项目的gradle的编译环境,gradle>wrapper>gradle-wrapper.properties文件中的distributionUrl如:distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip2)检查项目build.gradle文件中的classpath如:classpath "com.android.tools.build:gradle:3.2.0"3) 检查项目build.gradle文件中的repositories设置如:repositories {google()jcenter()maven {url 'https://maven.google.com/'name 'Google'}}**(我的就是因为之前报出依赖冲突的错误,所以我进行版本切换,换到我的原来的版本也就是4.0.1,我们各自版本不一样可以根据自己来调整)**

(注意这一步我的版本,大家可以进行参考)

我的uni-app项目同过以上的步骤基本上就可以完成了(如果出现问题的小伙伴可以在网上搜索一些答案,或者可以评论给我)

uni-app如何打包apk到Android studio中调用相关推荐

  1. android studio调用python,Android studio中编写Python代码-2

    Chaquopy 教程 Chaquopy Chaquopy的作用:使用Chaquopy在Android Studio添加Python环境,java和Python互调 目前调试后APP可以正常运行(20 ...

  2. android 自定义apk名,Android Studio 打包自定义apk文件名

    使用Android Studio打包的时候,我们有时候需要自定义apk的文件名,在此记录一下. 在app的build.gradle中,根节点下使用关键词def声明一个全局变量,用于获取打包的时间,格式 ...

  3. android 自定义apk名,Android Studio多渠道打包、自定义打包APK名称

    现在为了推广产品,会在多个渠道应用市场发布应用,为了统计不同渠道的数据,需要在应用中表明渠道,如果一个一个去修改打包效率会很低.AS为我们提供了简便的方法,可以多渠道打包,一次打包所有的渠道包. 1. ...

  4. Uniapp中使用高德地图,并在android studio中离线打包

    Uniapp中使用高德地图,并在android studio中离线打包 带高德地图功能的Uniapp的android离线打包 1. Uniapp中使用高德地图的方式 2. 高德地图中申请key 3. ...

  5. [免费专栏] Android安全之动态调试APP的一些技巧「Android Studio调试」

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  6. Android Studio中的APK分析器

    拖拽APK到Android Studio的编辑窗口.(最粗暴的方式) 切换到Project视图,并且双击APK文件. 在菜单栏中选择 Build -> Analyzer APK,并且选择APK. ...

  7. android生成apk流程,Android Studio生成APK的基本流程

    Android Studio生成APK的基本流程 2020年08月14日 | 萬仟网移动技术 | 我要评论 Android Studio生成APK流程修改版本号和文件名安全加固(可选)生成签名apk修 ...

  8. APP开发流程实例讲解-儒释道网络电台八天开发全程-在Android Studio中完成界面设计

    APP开发流程实例讲解-儒释道网络电台八天开发全程 功能和界面初步设定 APP开发流程实例讲解-儒释道网络电台八天开发全程 项目发起 功能和界面初步设定 在Android Studio中完成界面设计 ...

  9. Android studio中打包生成release版本时提示 A problem occurred evaluating root project ‘My‘出错问题的解决方法

    在Android studio中打包生成release版本时,下面的build output 提示 :   A problem occurred evaluating root project 'My ...

最新文章

  1. 【文本分类】Convolutional Neural Networks for Sentence Classification
  2. fir滤波器课程设计matlab,Matlab课程设计---FIR数字滤波器
  3. NOIP模拟测试25
  4. 利用Python下载网络小说并保存到本地文件
  5. 关于强连通图和欧拉图的一些粗浅理解
  6. 喧嚣过后,揭秘《咪蒙教你月薪5万》背后的真相
  7. 妙哉!那个用文言文编程的小哥,竟从28万行唐诗中找出了对称矩阵
  8. xp系统计算机启动时灰色界面,XP系统任务管理器是灰色的打不开怎么办
  9. LintCode 练习【C++】
  10. Python之手机ua
  11. PMP考试科目有什么?
  12. iPhone14、iPhone14 Max和iPhone14 Pro的区别
  13. 手把手教你做智能手环
  14. 在DAZ3D STUDIO中使用.OBJ和.FBX三维模型
  15. 私有和公开IP地址的区别是什么?
  16. 一文网尽CV/Robotics顶会论文常用高级词汇/句式!
  17. 该内存不能为written或read的解决方案
  18. JS的传递数据不刷新页面的应用
  19. Game Theory: 公平博弈
  20. 苏泊尔 CFXB30FC19电源板 原理图 苏泊尔FC19维修手册摘录

热门文章

  1. MAC无法隐藏文件及其扩展
  2. 明日方舟松烟行动狂嚎沙原怎么打
  3. 【名家名著】狄更斯和他的《双城记》
  4. 品百味人生 2020年国庆假期
  5. 拼多多的活动保证金能不能提现?
  6. python给excel排序_Python实现自定义顺序、排列写入数据到Excel的方法
  7. NodeJs的小Demo
  8. #我的年度用车总结#强烈安利 AION Y Plus 用车必备套件
  9. win10电脑如何修改ip地址
  10. ChatGPT如何影响各行各业