Встроить пешеходный переход в андроид студии
Я новичок в программировании Android и Android Studio. Я исследовал API для встраивания crosswalk для своего проекта и попытался внедрить его в Android Studio. Но я не мог быть успешным. Даже я не знаю точно, как можно встроить API, который имеет файл Gradle или нет.
Может быть, есть проблема с системой gradle? Вкратце, как я могу шаг за шагом встроить crosswalk-webview в свой проект с помощью android studio? Большое спасибо вам.
5 ответов
Следующий: https://diego.org/2015/01/07/embedding-crosswalk-in-android-studio/
Откройте AndroidStudio для просмотра проекта в папке приложения edit build.gradle:
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'}
Синхронизировать проект.
добавить этот вид в макете 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" />
В деятельности или фрагменте:
import org.xwalk.core.XWalkPreferences; import org.xwalk.core.XWalkView;
в onCreate:
XWalkView xWalkWebView=(XWalkView)findViewById(R.id.xwalkWebView); xWalkWebView.clearCache(true); xWalkWebView.load("http://...", null); // turn on debugging XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);
Я успешно использовал WebRTC в XWalkView на Android 4.3 и 4.4 после сбоя с готовым WebView. Я думаю, что Android 5 Lollipop находится на одном уровне с последним хромом.
Для встраивания в новые проекты или сборки с помощью 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'
нужно дать скачать последний пешеходный переход - Примечание. Необходимо заставить 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 ... />
Спасибо за эту Rubber Duck - она мне очень помогла!
Примечание: если вы добавляете crosswalk для выполнения 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" />
Вот еще одно руководство по установке Crosswalk в Android Studio. С помощью этого метода вы можете выбрать архитектуру процессора, на которую хотите ориентироваться, и тем самым уменьшите размер файла APK примерно до 20 МБ вместо примерно 40 МБ, которые вы использовали при использовании вышеупомянутого. метод.
http://www.zhuatang.com/en/as-tips-3.jsp
При создании папки ресурсов в руководстве обязательно используйте: Файл-> Создать-> Папка->Res Folder
В конце учебника есть также ссылка Github на работающий проект, созданный с помощью метода, описанного в учебнике: https://github.com/zhsoft88/TestCrosswalkEmbed2
Это необходимо также для загрузки изображений через HTML5, как подсказал здесь
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mXwalkView != null) {
mXwalkView.onActivityResult(requestCode, resultCode, data);
}
}