集成到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. 3. 4. 5. //sd卡读写 6. 7.

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 对一些基础功能实现了统一的接口,可实现这些接口来定制自己的业务。例如:图片下载等。