-
Notifications
You must be signed in to change notification settings - Fork 207
sdk接入
fangyuxiong edited this page Dec 11, 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 "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);
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();
if (HotReloadHelper.isIPPortString(code)) {
HotReloadHelper.setUseWifi(code);
}
注意:
- instance三个生命周期记得调用
- 在InitData初始化中传入lua路径,项目run起来即可展示对应lua界面。
- 屏幕上会多出一个lua标识,此时我们便可以通过热重载进行更加便捷的开发。
- pod配置:
pod 'MLN','1.0.0'
- 创建一个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.0'
- 创建一个支持的HotReload的MLN Lua页面
// 创建一个Lua页面
MLNHotReloadViewController *vc = [[MLNHotReloadViewController alloc] initWithNavigationBarTransparent:YES]
- push页面
[self presentViewController:vc animated:YES completion:nil];
- 运行后设备屏幕上会多出一个lua标识,此时我们便可以通过热重载进行更加便捷的开发
注意:
- Xcode版本或手机系统版本差异可能运行后出现黑屏现象。解决方案:在AppDelegate.h文件中声明UIWindow
@property (strong, nonatomic) UIWindow *window;
即可。 - 如果遇到无法present页面的情况,请检查是否设置了导航控制器