APICloud SuperWebView融合Android原生平台

一、简介

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

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

二、SuperWebview集成过程

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

APICloud SuperWebView融合Android原生平台_第1张图片

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

APICloud SuperWebView融合Android原生平台_第2张图片

 

3. 首先我们将SDK/lib/libs目录下的所有文件拷贝到我们的Android工程的libs目录下APICloud SuperWebView融合Android原生平台_第3张图片

 

APICloud SuperWebView融合Android原生平台_第4张图片

 

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

APICloud SuperWebView融合Android原生平台_第5张图片

 

5. 在build.gradle的对应位置中添加一下内容APICloud SuperWebView融合Android原生平台_第6张图片

 

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

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

APICloud SuperWebView融合Android原生平台_第7张图片

 

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

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

APICloud SuperWebView融合Android原生平台_第8张图片

 

APICloud SuperWebView融合Android原生平台_第9张图片

然后将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下,最终结果如下图所示

APICloud SuperWebView融合Android原生平台_第10张图片

 

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

APICloud SuperWebView融合Android原生平台_第11张图片

 

APICloud SuperWebView融合Android原生平台_第12张图片

 

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

APICloud SuperWebView融合Android原生平台_第13张图片

 

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

APICloud SuperWebView融合Android原生平台_第14张图片

 

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

APICloud SuperWebView融合Android原生平台_第15张图片

 

APICloud SuperWebView融合Android原生平台_第16张图片

 


    
        

        
    

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

APICloud SuperWebView融合Android原生平台_第17张图片

 

 至此我们的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标签做以下配置



    
    
    
 

APICloud SuperWebView融合Android原生平台_第18张图片

android:networkSecurityConfig="@xml/network_security_config"

APICloud SuperWebView融合Android原生平台_第19张图片

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'
}

 

你可能感兴趣的:(APICloud SuperWebView融合Android原生平台)