-
Notifications
You must be signed in to change notification settings - Fork 207
sdk接入
xuwhale6 edited this page Dec 17, 2019
·
51 revisions
打开build.gradle配置:
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a"
}
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0+' //引入包的版本需在1.1.0以上
implementation "androidx.recyclerview:recyclerview:1.1.0+" //引入包的版本需在1.1.0以上
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
// 核心库
implementation "com.immomo.mlncore:core:1.0.0"
// view、工具桥接库
implementation "com.immomo.mls:mln:1.0.0"
// 代码生成库
annotationProcessor "com.immomo.mls:processor:1.0.0"
// 热重载,配合IDEA插件使用
debugImplementation "com.immomo.luanative:hotreload:1.0.0"
releaseImplementation "com.immomo.luanative:hotreload_empty:1.0.0"
// 配合热重载使用
debugImplementation "com.google.protobuf:protobuf-lite:3.0.1"
}
新建一个全局类继承Application,并在onCreate中初始化Lua Engine,如下:
MLSEngine.init(application, BuildConfig.DEBUG)
.setLVConfig(new LVConfigBuilder(application)
.setRootDir(rootDir) //设置lua根目录
.setImageDir(imageDir) //设置lua图片根目录
.setCacheDir(cacheDir) //设置lua缓存目录
.setGlobalResourceDir(gResDir) //设置资源文件目录
.build())
.setImageProvider(new GlideImageProvider())//lua加载图片工具,不实现的话,图片无法展示
.build(true);
注意:
-
需正确配置LVConfig中各目录地址。
-
ImageProvider需自行定义图片加载类。
可执行命令:
git clone https://github.com/momotech/MLN
,参考项目中MLN-Android的GlideImageProvider
类实现。 -
记得在AndroidManifest.xml中注册该Application。
FrameLayout frameLayout = new FrameLayout(this);
setContentView(frameLayout);
instance = new MLSInstance(this, true, true);
instance.setContainer(frameLayout);
InitData initData = new InitData("file://android_asset/demo.lua"); //MLSBundleUtils.parseFromBundle(bundle);MLSBundleUtils.createBundle(url)
instance.setData(initData);
if (!instance.isValid()) {
//非法url
}
// instance三个生命周期记得调用:
instance.onResume();
instance.onPause();
instance.onDestroy();
注意:
- instance三个生命周期记得调用
- 在InitData初始化中传入lua路径,项目run起来即可展示对应lua界面。
- 屏幕上会多出一个lua标识,此时我们便可以通过热重载进行更加便捷的开发。
// 1. 在MLSEngine初始化中设置QrCaptureAdapter,设置后可看到lua悬浮窗多出一个扫码图标
MLSEngine.init(mApplication, BuildConfig.DEBUG)
.setQrCaptureAdapter(new MLSQrCaptureAdapter() {
@Override
public void startQrCapture(Context context) {
//跳转扫码页面
}
})
// 2. 在二维码扫描结果中,设置热重载方式为wifi连接
if (HotReloadHelper.isIPPortString(result)) {
HotReloadHelper.setUseWifi(result);
}
- pod配置:
pod 'MLN','1.0.0.2'
- 创建一个MLN Lua页面
//在工程里新建一个lua页面,命名为demo.lua,然后在启动页中加载demo.lua
NSString *entryfile = @"demo.lua";
MLNKitViewController *kvc = [[MLNKitViewController alloc] initWithEntryFilePath:entryfile];
- push页面
[self presentViewController:kvc animated:YES completion:nil];
- 运行后设备会显示我们如上加载的lua文件
- pod配置:
pod 'MLNDevTool' , '0.1.1'
- 创建一个支持的HotReload的MLN Lua页面
// 创建一个Lua页面
MLNHotReloadViewController *vc = [[MLNHotReloadViewController alloc] initWithNavigationBarTransparent:YES]
- push页面
[self presentViewController:vc animated:YES completion:nil];
- 环境处理配置
// AppDelegate中设置如下
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 可根据需要开启预加载
[MLNKitEnvironment instancePreload];
// 设置默认的网络Handler
[MLNKitEnvironment setDefaultHttpHandler:...];
// 设置默认的ScrollRefreshHandler
[MLNKitEnvironment setDefaultScrollRefreshHandler:...];
// 设置默认的图片加载器
[MLNKitEnvironment setDefaultImageLoader:...];
// 设置默认的导航跳转工具
[MLNKitEnvironment setDefaultNavigatorHandler:...];
}
-
申请相机权限
1)找到info.plist文件右键->Open As->Source Code,添加相机权限<key>NSCameraUsageDescription</key> <string>我要使用摄像机</string>
2)选中info.plist文件右键->Open As->Property List,查看相机权限是否添加成功
-
运行后设备屏幕上会多出一个lua标识,此时我们便可以通过热重载进行更加便捷的开发()
注意:
- Xcode版本或手机系统版本差异可能运行后出现黑屏现象。解决方案:在AppDelegate.h文件中声明UIWindow
@property (strong, nonatomic) UIWindow *window;
即可。 - 如果遇到无法present页面的情况,请检查是否设置了导航控制器