此文章最适合第一次开发原生插件并且无原生开发经验的攻城狮!
一、导入项目
1.点击Android Studio菜单选项File—>New—>Import Project后导入uni插件原生项目 UniPlugin-Hello-AS工程请在App离线SDK中查找
2.导入以后目录结构如下,等待依赖导入完成
3. 粗略介绍一下项目的各个配置是怎样的
先说图中的1,settings.gradle文件,指定项目名称,include ':app’好像表示会打包成一个app而不是一个依赖库,依赖库就是给其他项目引用的
图中2,gradle.properties文件,配置运行环境参数比如最大堆内存等。android.useAndroidX=true和android.enableJetifier=true表示自动使用androidx依赖库,如果使用到对应的类会自动引入androidx依赖包
org.gradle.jvmargs=-Xmx1536m
图中3,External Libraries,下面是当前项目的所有引用,可以从这里看到所有依赖jar
图中4,build.gradle文件,在项目的根目录下,如下,是关于从哪里下载依赖,以及一些项目级别的配置:
图中的gradle、build、.idea、.gradle文件夹,这些是idea以及外部环境如何定义当前项目,一般跟项目代码无关,可以不关注。
图中5,textdemo,这个是项目自己写插件demo目录,笼统来讲你开发的插件就是他(名字可以忽略随便起的)
4.非常重要app文件讲解
图中1,build目录,这个目录是项目编译后放字节码文件,重新编译前可以直接删掉没事
图中2,libs目录,存放依赖的jar包,放在这个目录的jar会自动添加到依赖(加上依赖就行:implementation fileTree(dir: ‘libs’, include: [‘*.jar’])
图中3, src\main\java,这是源码目录,存放所有源码,也就是java类
图中4, src\main\res,资源目录,存放图片,样式,布局文件layout,等
图中5,src\main\AndroidManifest.xml文件,相当于web.xml文件
public class TestModule extends UniModule {
JSCallback jsCallback;
String path = "";
/**
* 简单回调示例
* 传入一个String类型 处理并返回
*/
@JSMethod(uiThread = true)
public void processData(String data, JSCallback jsCallback) {
this.jsCallback = jsCallback;
if (mWXSDKInstance != null && mWXSDKInstance.getContext() instanceof Activity) {
path = data + "+(处理完成)";
//返回处理结果 进行回调
jsCallback.invoke(path);
}
}
/**
* 调用原生Toast显示传入内容
*/
@JSMethod(uiThread = true)
public void showToast(String message, JSCallback jsCallback) {
if (mWXSDKInstance != null && mWXSDKInstance.getContext() instanceof Activity) {
Toast.makeText(mWXSDKInstance.getContext(), message, Toast.LENGTH_SHORT).show();
//返回处理结果 进行回调
jsCallback.invoke("接收到了");
}
}
}
//引用方式
const textdemo = uni.requireNativePlugin('textdemo');
textdemo.showToast({message:"Hello World"}, res => {
//插件回调
console.log(res)
})
signingConfigs {
config {
keyAlias '证书别名'
keyPassword '证书密码'
storeFile file('uniapp.keystore')//放在app目录下的证书
storePassword '证书密码'
v1SigningEnabled true
v2SigningEnabled true
}
}