Пользовательский модуль в Cordova - Скопируйте файлы перед сборкой - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу скопировать файлы из каталога до начала процесса сборки - в /platforms/android/app/src.

Я наткнулся на Плагин Microsoft Ace для Cordova, новидимо этот проект больше не поддерживается, поэтому я снова заработал (как-то).Файлы, которые нужно скопировать, находятся в каталоге cordova в / native / (например, AndroidManifest.xml) и должны быть перемещены в скомпилированный каталог.

Сначала я попытался изменить android_before_compile.js

function copyAndroidFiles() {
    var fs = require('fs-extra');
    var dest = path.join(__dirname, '../../../../platforms/android');
    var nativeAndroidAppFolder = path.join(__dirname, '../../../../native/android');
    try {
       fs.accessSync(nativeAndroidAppFolder, fs.R_OK);
    }
    catch (ex) {
       return;
    }
    fs.copySync(nativeAndroidAppFolder, dest);
}

И он, например, копирует нативный / android / AndroidManifest.xml в каталог platform / android /.Но в платформах / android / app / src / main есть еще один сгенерированный AndroidManifest.xml, который используется для создания приложения, поэтому мои скопированные файлы ничего не меняют.

Итак, я переместился в файл plugin.xml в каталоге плагинов и добавил модификаторы для манифеста и запрос копирования для файлов:

<source-file src="src/android/static/res/xml/list_widget_info.xml" target-dir="res/xml" /> 
[...]
     <config-file target="AndroidManifest.xml" parent="/manifest/application">
     <activity xmlns:android="http://schemas.android.com/apk/res/android" android:name="run.ace.AceActivity">
     </activity>
     <receiver android:label="List" 
          android:name="your.package.name1.ListWidgetProvider">
          <intent-filter>
              <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
          </intent-filter>
          <meta-data android:name="android.appwidget.provider" 
               android:resource="@xml/list_widget_info" />
     </receiver>
     <service android:exported="false" android:name="run.ace.AppWidgetService" android:permission="android.permission.BIND_REMOTEVIEWS" />

И это прекрасно работает, покаЯ удаляю и добавляю платформу Android каждый раз, когда меняю что-то в папке native /.

Так как же правильно скопировать файлы перед компиляцией?

9.0.0 (cordova-lib@9.0.1)

...