uniapp原⽣安卓插件开发之路
声明:
我的功能需求:全局悬浮框,也就是在其他应⽤上依旧能悬浮。查遍uni⽂档,⽆法实现,甚⾄native.js也⽆法实现,⽆奈只能⾛上原⽣插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不⾹嘛,不过别⼈严谨肯定还是有别⼈道理的,加油吧,争取能⼊个门!)
本⼈不懂安卓开发,完全安卓⼩⽩,所以安卓⽅⾯可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能⼒总能被“逼”出来。有描述错误的还望指正。
最后的成果
第⼀步:安装开发⼯具
因为是原⽣开发,所以需要安卓开发⼯具AndroidStudio。AndroidStudio⼜需要java环境所以需要安装JAVA JDK搭建Java环境。第三个包是uniapp提供的⽰例Demo和SDK,是某⽹盘下载的,建议先下载,毕竟90k/s有点刺激。
附:
JAVA环境 jdk1.7+(最优1.8) (PS:点链接进去拉到底能看到“Windows x64 Installer”等机型JDK包下载)
Android Studio 下载地址: OR简易安卓app开发
App离线SDK下载:
第⼆步:开发
安装好开发⼯具后,先导⼊下载的Uniapp Demo中解压后有⼀个叫UniPlugin-Hello-AS安卓项⽬
UniPlugin-Hello-AS⼯程请在中查
打开Android Studio菜单选项File--->New--->Import Project。
导⼊成功之后,等待⼀会,它会⾃动下载⼀些依赖的包,如过程中控制台报错,仔细去看,与下图类似的就提⽰你缺SDK,问你要不要下载,你点Install,然后选择accept,点击next下载,完了error就没了。
成了之后尝试运⾏⼀下Demo,⼀般的安装教程是让你配置内置模拟器。那家伙卡。太难为⼈了,直接⼀根USB怼上去,记得打开USB调试。(也可以使⽤mumu等安卓模拟器程序调试:)
马上Android Studio就能检测到你的⼿机,嗯~我的渣渣9还是蛮争⽓的。右边绿⾊播放按钮,点⼀下“运⾏”!成功运⾏
第三步插件开发模式
熟悉模式
我们可以先在⽬录uniplugin_richalert中玩玩以便熟悉该开发模式。
打开⽂件uniplugin_richalert——src——main——java——uni.dcloud.io.uniplugin_richalert——RichalertWXModule
show这个⽅法是接收了⼀个JSONObject和⼀个jsCallback。我们先注释下title的赋值,改成赋值为“Hello World”,继续运⾏能发现app 点击之后红⾊标题改了。(如果需要拿option中的数据使⽤:String myKey = String("key");)
所以说,如果我们要实现⼀些功能都可以在这⾥⾯测试,直接。简单的逻辑就是引⼊原⽣插件,调⽤⽅法,实现需求。
有些需要初始化操作的需求就需要创建AppHookProxy接⼝的实体类可以看到同⽬录的Richalert_AppProxy,在这⾥就可以写组件的初始化逻辑,但是这个⽂件需要在项⽬app——》src——
》main——》assets中的dcloud_uniplugins.json⽂件中对应的组件hooksClass节点添加实现AppHookProxy接⼝的实体类完整名。
新建⼀个⾃⼰的组件
不能只玩别⼈现成的,所以来⾃⼰写⼀个⽂件。
在项⽬根⽬录右击new——》Module——》Android Library——》next
创建完成
1)先编辑组件⽬录下的adle⽂件。拉到最底,看到dependencies节点,注释全部内容改为如下内容,并且在同级加上如下图⼀致的repositories节点(这波操作就是因为uni引⽤原⽣插件依赖于weex所以需要引⼊相关依赖包)
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compileOnly fileTree(dir: 'libs', include: ['*.jar'])
compileOnly fileTree(dir: '../app/libs', include: ['uniapp-release.aar'])
/*注意这个包的路径只适⽤于UniPlugin-Hello-AS项⽬中。如果⾃⼰要新建项⽬,
记得带⾛这个路径的uniapp-release.aar⽂件,并且在组件填写正确的路径。*/
compileOnly "com.android.support:recyclerview-v7:25.3.1"
compileOnly "com.android.support:support-v4:25.3.1"
compileOnly "com.android.support:appcompat-v7:25.3.1"
implementation 'com.alibaba:fastjson:1.1.46.android'
implementation 'com.facebook.fresco:fresco:0.12.0'
}
2)再到组件⽬录下src——main——java右击new——Java Class
Name随便取,Superclass填⼊com.taobao.weexmon.WXModule。其他不动,直接ok完成创建。就可以在这个⽂件写⾃⼰的逻辑了。
3)在项⽬下app——》src——》main——》assets中的dcloud_uniplugins.json⽂件与其他三个插件⼀致注册⾃⼰新建的组件
4)组件⽤到的安卓功能权限配置到组件main⽬录下的l⽂件中写<uses-permission xxx />
调试
打开项⽬⾥uniapp⽰例源码,他这是提供了⼀个uniapp项⽬,告诉你怎么调⽤插件的。别傻傻的直接去改这代码啊,改它不会影响你现在这个项⽬进程的。往下看。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论