【问题标题】:embed crosswalk in android studio在android studio中嵌入人行横道
【发布时间】:2015-02-28 12:39:46
【问题描述】:

我是 android 编程和 android studio 的新手。 我为我的项目研究了人行横道嵌入 API,并尝试将其嵌入到 android studio 中。但我无法成功。甚至我也不知道如何嵌入一个有 gradle 文件的 API。

可能是gradle系统有问题? 简而言之,我怎样才能将 crosswalk-webview 逐步嵌入到我的项目中? 非常感谢你。

【问题讨论】:

    标签: android-studio build.gradle android-library crosswalk-runtime


    【解决方案1】:

    关注:https://diego.org/2015/01/07/embedding-crosswalk-in-android-studio/

    1. 在应用文件夹编辑 build.gradle 中打开 AndroidStudio 到项目视图:

      repositories {
      maven {
      url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2'}}
      
      
      dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
      compile 'com.android.support:appcompat-v7:21.0.3'
      compile 'org.xwalk:xwalk_core_library:10.39.235.15'}
      
    2. 同步项目。

    3. 在布局 xml 中添加此视图。

      <org.xwalk.core.XWalkView
      android:id="@+id/xwalkWebView"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:background="#000000"
      />
      
    4. 在活动或片段中:

      import org.xwalk.core.XWalkPreferences;
      import org.xwalk.core.XWalkView;
      
    5. 在 onCreate 中:

      XWalkView xWalkWebView=(XWalkView)findViewById(R.id.xwalkWebView);
      xWalkWebView.clearCache(true);
      xWalkWebView.load("http://...", null);
      // turn on debugging
      XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);
      

    在使用开箱即用的 WebView 失败后,我已经在 android 4.3 和 4.4 上的 XWalkView 中成功使用了 WebRTC。我认为 android 5 Lollipop 可以与最新的 chromium 相提并论。

    【讨论】:

    • 我需要在清单文件中添加&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;。否则,我的应用程序崩溃了。
    • 不知道。您可以使用较新的 android 并避免一起使用
    • 更新:nvm,我没有将存储库行添加到顶级 gradle 文件。一旦我这样做了,它似乎就起作用了。 OLD:我刚试过这个,我得到了Error:Failed to resolve: org.xwalk:xwalk_core_library:10.39.235.15。还有人看到这个吗?他们是否删除了 Maven 存储库?
    • 一起避免是什么意思? @RubberDuck
    • 我想要一个 WebView 以最低优先级加载/呈现,并且不会对运行游戏的 GLSurfaceView 造成太大影响,人行横道可以做到吗?
    【解决方案2】:

    要嵌入项目或使用 Android Studio 3 构建,您必须更改以下四个文件

    这是一个示例app.gradle 文件

    apply plugin: 'com.android.application'
    android {
        compileSdkVersion 26
        defaultConfig {
            applicationId "online.saai.crosswalkandroid3"
            minSdkVersion 17
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    repositories {
        maven {
            url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2/'
        }
    }
    
    configurations.all {
        resolutionStrategy {
            force 'com.android.support:support-v4:27.1.0'
        }
    }
    
    dependencies {
        compile 'org.xwalk:xwalk_core_library:23.53.589.4'
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.1'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }
    

    需要考虑的事情,

    • 要使用最新的人行横道23.53.589.4,min sdk 版本应该>= 16,这里我用的是17,即minSdkVersion 17
    • maven 仓库repositories { ... } 和编译依赖compile 'org.xwalk:xwalk_core_library:23.53.589.4' 应该提供下载最新的crosswalk
    • 注意 您必须强制 gradle 使用旧的 android 支持库,因为版本 28 不兼容 configurations.all { ... }

    完成此操作后,将您的 .xml 文件 (activity_main.xml) 替换为以下内容,以便它可以使用人行横道视图

    <?xml version="1.0" encoding="utf-8"?>
    <org.xwalk.core.XWalkView android:id="@+id/activity_main"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    </org.xwalk.core.XWalkView>
    

    现在MainActivity.java

    public class MainActivity extends Activity {
      private XWalkView mXWalkView;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mXWalkView = (XWalkView) findViewById(R.id.activity_main);
        mXWalkView.load("http://crosswalk-project.org/", null);
      }
    }
    

    最后允许您的应用程序使用您在应用程序中需要的互联网和其他权限,进入 `AndroidManifest.xml' 并添加此权限。这是一个示例

    <manifest ... />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        ...
    <application ... />
    

    【讨论】:

    • 你知道如何升级到64位版本吗?
    【解决方案3】:

    感谢这只橡皮鸭 - 它真的帮助了我!

    注意:如果您要添加人行横道来执行 webRTC,则需要将这些添加到您的清单中,否则传出的视频/音频将无法正常工作(也许您不需要全部,但它对我有用!);

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    
    <uses-feature
        android:name="android.hardware.camera"
        android:required="true" />
    

    【讨论】:

      【解决方案4】:

      这里是另一个关于如何将 Crosswalk 导入 Android Studio 的教程,使用此方法,您可以选择要定位的处理器架构,从而将 APK 文件大小减少到大约 20 mb,而不是最终的大约 40 mb使用上述方法。

      http://www.zhuatang.com/en/as-tips-3.jsp

      当您在教程中创建资源文件夹时,请务必使用: 文件->新建->文件夹->Res文件夹

      在教程的最后还有一个 Github 链接,指向使用教程中描述的方法创建的功能项目: https://github.com/zhsoft88/TestCrosswalkEmbed2

      【讨论】:

      • 不工作这个提示,仍然要求扩展 XWalkActivity =(
      【解决方案5】:

      这也是通过 html5 加载图像所必需的,如 here 提示的那样

      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          if (mXwalkView != null) {
              mXwalkView.onActivityResult(requestCode, resultCode, data);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-15
        • 2016-12-27
        • 1970-01-01
        • 2018-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多