До недавнего времени я использовал следующие
- Cordova Android 6.3.0
- Gradle 4.9
для создания моего гибридного приложения для Android, которое использует один пользовательский - т.е. написанный мной - плагин.Плагин, в свою очередь, имеет ряд внешних зависимостей, которые я указываю через файл myapp / platform / android / build-extras.gradle , который указан ниже
ext.postBuildExtras =
{
android
{
dependencies
{
compile 'com.squareup.duktape:duktape-android:1.3.0'
compile 'net.zetetic:android-database-sqlcipher:3.5.9@aar'
compile 'co.realtime:messaging-android:2.1.+'
compile 'com.google.android.gms:play-services-location:15.0.1'
compile 'com.android.installreferrer:installreferrer:1.0'
}
defaultConfig
{
jackOptions {enabled true}
}
compileOptions
{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
allprojects
{
compileOptions
{
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
}
}
Я нацеливаюсь на Android SDK26 с минимальным уровнем SDK, установленным на 23. Мой файл Cordova config.xml
показан ниже
<?xml version='1.0' encoding='utf-8'?>
<widget android-versionCode="1190" android-versionName="Etoile-2"
id="my.app.id" version="1.1.9" xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>My App</name>
<description>My App</description>
<author email="someone@gmail.com" href="https://example.org">My Name.
</author>
<content src="index.html" />
<access origin="*" />
<icon platform="android" qualifier="mdpi" src="res/mdpi.png" />
<icon platform="android" qualifier="hdpi" src="res/hdpi.png" />
<icon platform="android" qualifier="xhdpi" src="res/xhdpi.png" />
<icon platform="android" qualifier="xxdpi" src="res/xxdpi.png" />
<icon platform="android" qualifier="xxxdpi" src="res/xxxdpi.png" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
<FrameLayout android:focusable="true"
android:focusableInTouchMode="true"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
</FrameLayout>
<preference name="android-minSdkVersion" value="23" />
<preference name="android-targetSdkVersion" value="26" />
</platform>
<preference name="Orientation" value="portrait" />
<plugin name="ext.org.plugin" spec="path:\to\my\plugin" />
<engine name="android" spec="^7.0.0" />
</widget>
Я нахожусь в процессе подготовки более современного ПК с Windows для моих сборок Android.В процессе я обновил до
- Cordova Android 7.0.0
- Gradle 4.10.0 (установлен через Scoop)
- Node 10.10.0
Я прошел пошаговую процедуру восстановления всего проекта
- Создание нового проекта Cordova CLI
cordova create myapp ext.example.myproj MyApp
- Добавление платформы Android
cordova platform add android
который добавляет Cordova Android 7.0.0 - Создание этого фиктивного приложения
cordova build android --debug
: работает - Замените Cordova
config.xml
по умолчанию на мою версию (показанную выше) за вычетом ссылки на мой пользовательский плагин - Построить заново - все еще работает
- Скопировать через мой оригинальный
build-extras.gradle
файл в myapp / platform / android - Построить снова - все еще работает
- Добавить мойПользовательский плагин
cordova plugin add 'path:\to\my\plugin
Выдайте cordova clean
, за которым следует cordova build android
, что приведет к ошибкам вдоль линий
: app: compileDebugJavaWithJavac path: \ to \ my \ app\ platform \ android \ app \ src \ main \ java \ ext \ example \ plugin \ BCTrailer.java: 4: ошибка: пакет net.sqlcipher does не существует import net.sqlcipher.Cursor;
, что, по-видимому, означает, что содержимое моего build-extras.gradle
файла не использовалось во время сборки.Я намеренно испортил этот файл, оставив скобку, чтобы сделать XML недействительным.Если бы файл читали, я ожидал, что Градл будет жаловаться.Вместо этого он просто идет вперед и выдает те же ошибки, такие как package net.sqlcipher
не существует и т. Д.
Я отмечал разговоры о том, что compile
не рекомендуется в зависимости в пользу целого нового набора команд, таких как implementation
и api
.Я попытался заменить compile
на implementation
в своем собственном файле build-extras.gradle
, но безрезультатно.
Очевидно, я здесь что-то делаю не так, и это связано с изменениями в Gradle.Я был бы очень признателен за любую помощь.