一、简介

APICloud是使用标准Web技术开发iOS、Android原生App的一个平台。SuperWebview是APICloud官方推出的另一项重量级API生态产品,以SDK方式提供,致力于提升和改善移动设备Webview体验差的整套解决方案。

本文主要对SuperWebview的使用过程及可能遇到的问题作简要讨论。

二、SuperWebview集成过程

1. 既然是要融合Android原生,首先就要有一个Android工程,我们要先创建一个Android工程,这里我使用的是Android Studio作为开发工具,创建的具体步骤在这就不展开讨论了,创建完成后如下图所示。

2. 在APICloud的应用控制台中生成对应应用的SDK,具体的操作步骤请参考https://docs.apicloud.com/Dev-Guide/SuperWebview-guide-for-android,我们下载该SDK并解压得到的目录结构如下所示,我们只需关心SDK/lib目录下的内容即可。

 

3. 首先我们将SDK/lib/libs目录下的所有文件拷贝到我们的Android工程的libs目录下

 

 

4. 先选中libs下所有jar包,单击右键,点击Add as Library,把jar包添加到资源库

 

5. 在build.gradle的对应位置中添加一下内容

 

ndk{    abiFilters 'armeabi-v7a', 'armeabi' ,'x86'}
sourceSets {    main {        jniLibs.srcDirs = ['libs']    }}
allprojects {    repositories {        mavenCentral()    }}

6. 在build.gradle中注释掉com.android.support-v4/7相关的资源包,并添加对应的配置

 

configurations {    all*.exclude group: 'com.android.support', module: 'support-v13'}

 7. 将解压得到的SDK/lib/res下的部分资源文件拷贝到Android工程的资源目录下,注意不要拷贝values文件夹,因为拷贝该文件夹会发生文件冲突

 

然后将SDK/lib/res/values下的colors.xml、strings.xml、styles.xml(若有这三个文件的话)里面的内容手动拷贝到Android工程的src/main/res/values下的colors.xml、strings.xml、styles.xml中去,然后将SDK/lib/res/values下其他的.xml文件拷贝到Android工程的src/main/res/values下,最终结果如下图所示

 

8. 将SDK/lib/AndroidManifest.xml的内容拷贝到Android工程的AndroidManifest.xml文件中去,拷贝内容为下图所示

 

 

9. 若Android工程里没有Application类,则手动创建一个Application类,并在AndroidManifest.xml中指向该Application类,然后重写其onCreate方法,在onCreate方法中对APICloud进行初始化,如下图所示

 

//初始化APICloud,SDK中所有的API均需要初始化后方可调用执行APICloud.initialize(this);

 

10. 对加载SuperWebView的Activity进行配置,让其集成APICloud提供的ExternalActivity类,并在AndroidManifest.xml对该Activity进行配置,这里我们使用首启动的Activity作为加载SuperWebView的Activity类,配置如下图所示

 

 

                        

 11. 我们在Android工程中创建assets/widget文件夹,我们将写好的APICloud的H5代码拷贝到该文件夹,并给config.xml添加修饰头,如下图所示

 

<?xml version="1.0" encoding="UTF-8"?>

 至此我们的APICloud SuperWebView融合Android原生的工作已经完成

三、常见问题

1. Q:遇到java.io.IOException: Cleartext HTTP traffic to * not permitted

    A:这是由于Android 8禁止使用http协议做数据传输,我们需要在src/main/res/xml下创建network_security_config.xml文件,并添加以下内容,并且在AndroidManifest.xml中的application标签做以下配置

<?xml version="1.0" encoding="utf-8"?>             

android:networkSecurityConfig="@xml/network_security_config"

2. Q:Only fullscreen activities can request orientation错误

    A:在SuperWebView的Activity的theme中将android:windowIsTranslucent属性改为false 

3. Q:not find xxxx.so错误

    A:在build.gradle文件中的android标签下的defaultConfig标签中添加以下代码

ndk{    abiFilters 'armeabi-v7a', 'armeabi' ,'x86'}

 

更多相关文章

  1. 安卓ADT项目及升级AS(Android(安卓)Studio)全攻略
  2. Android(安卓)命令窗口中adb常用命令
  3. eclipse 上调试android的自带应用方法
  4. 编译 go 源码为 android 动态库(so)
  5. 在Android中利用iText生成PDF
  6. android应用基础--由官方帮助文件翻译
  7. Android(安卓)Annotations框架 配置及使用(Windows 7 + Android(
  8. Android添加自定义公共so库
  9. android javaScript数据传递

随机推荐

  1. 第25章、OnTouchListener触摸事件(从零开
  2. Android界面与交互设计原则(Android Desig
  3. Android 软键盘弹出时布局位置改变
  4. Android 模块化编程之引用本地的aar
  5. 为android电源键添加重启项
  6. Android数据绑定Data Binding初体验
  7. Android XML解析器的问题
  8. android view的xml属性
  9. Android不同分辨率适配
  10. android窗口管理剖析