集成到Android应用
目前,Weex 支持以下 ABI: * x86 * armeabi-v7a * arm64-v8a
在执行以下步骤之前,请先确认您的Android开发环境是ok的。 * JAVA环境, jdk7+ * Android Studio * NDK r18、Cmake 3.9.0+ (可选项:如果需要编译WEEX源码,需要NDK环境支持)
1. 设置gradle依赖
从 0.28.0 开始,Weex 每次 Release 都将会发布两个二进制版本,请阅读文档了解它们的区别 1. dependencies { 2. ... 3. // 以下两个 weex_sdk 版本二选一 4. //implementation 'org.apache.weex:sdk:0.28.0' 5. //implementation 'org.apache.weex:sdk_legacy:0.28.0' 6. 7. // fastjson 8. implementation 'com.alibaba:fastjson:1.1.46.android' 9. 10. //support library dependencies 11. implementation 'com.android.support:recyclerview-v7:23.1.1' 12. implementation 'com.android.support:support-v4:23.1.1' 13. implementation 'com.android.support:appcompat-v7:23.1.1' 14. }
2. 配置混淆规则
混淆规则如下,建议参考最新的源码配置 1. -keep class com.taobao.weex.bridge.** { ; } 2. -keep class com.taobao.weex.layout.* { *; } 3. -keep class com.taobao.weex.WXSDKEngine { ; } 4. -keep class com.taobao.weex.base.SystemMessageHandler { ; } 5. -dontwarn com.taobao.weex.bridge.
3. 声明权限
在AndroidManifest.xml中声明权限
1. //网络
2.
4. 初始化sdk
1. InitConfig config = new InitConfig.Builder()
2. //图片库接口
3. .setImgAdapter(new FrescoImageAdapter())
4. //网络库接口
5. .setHttpAdapter(new InterceptWXHttpAdapter())
6. .build();
7. WXSDKEngine.initialize(applicationContext,config);
- demo初始化源码
- 其它扩展配置看这里
5. 创建WXSDKInstance
WXSDKInstance是weex渲染页面的基本单元,
* 通过instance.render(url)拉取bundle,
* 在回调IWXRenderListener的onViewCreated返回创建的view,
* 将返回的view 添加到Activity的view上(rootView)
参见源码: WXPageActivity 1. public class MainActivity extends AppCompatActivity implements IWXRenderListener { 2. WXSDKInstance mWXSDKInstance; 3. @Override 4. protected void onCreate(Bundle savedInstanceState) { 5. super.onCreate(savedInstanceState); 6. setContentView(R.layout.activity_main); 7. mWXSDKInstance = new WXSDKInstance(this); 8. mWXSDKInstance.registerRenderListener(this); 9. /** 10. * bundleUrl source http://dotwe.org/vue/38e202c16bdfefbdb88a8754f975454c 11. */ 12. String pageName = "WXSample"; 13. String bundleUrl = "http://dotwe.org/raw/dist/38e202c16bdfefbdb88a8754f975454c.bundle.wx"; 14. mWXSDKInstance.renderByUrl(pageName, bundleUrl, null, null,WXRenderStrategy.APPEND_ASYNC); 15. } 16. @Override 17. public void onViewCreated(WXSDKInstance instance, View view) { 18. setContentView(view); 19. } 20. @Override 21. public void onRenderSuccess(WXSDKInstance instance, int width, int height) { 22. } 23. @Override 24. public void onRefreshSuccess(WXSDKInstance instance, int width, int height) { 25. } 26. @Override 27. public void onException(WXSDKInstance instance, String errCode, String msg) { 28. } 29. @Override 30. protected void onResume() { 31. super.onResume(); 32. if(mWXSDKInstance!=null){ 33. mWXSDKInstance.onActivityResume(); 34. } 35. } 36. @Override 37. protected void onPause() { 38. super.onPause(); 39. if(mWXSDKInstance!=null){ 40. mWXSDKInstance.onActivityPause(); 41. } 42. } 43. @Override 44. protected void onStop() { 45. super.onStop(); 46. if(mWXSDKInstance!=null){ 47. mWXSDKInstance.onActivityStop(); 48. } 49. } 50. @Override 51. protected void onDestroy() { 52. super.onDestroy(); 53. if(mWXSDKInstance!=null){ 54. mWXSDKInstance.onActivityDestroy(); 55. } 56. } 57. }
6. 运行app
运行app,您将会看到一个 hello world 页面。
* Hello World Demo 源码
* 提示: 点击二维码, 可以看到最终编译的代码产物。
7. 扩展Android能力
Weex 提供了能力扩展机制,可以根据自己的业务进行定制自己的功能。 主要分为: * Module 扩展, 非 UI 的特定功能。例如 sendHttp、openURL 等。 * Component 扩展, 实现特别功能的 Native 控件。例如:RichTextview,RefreshListview 等。 * Adapter 扩展, Weex 对一些基础功能实现了统一的接口,可实现这些接口来定制自己的业务。例如:图片下载等。
