Intereting Posts
Кордова Android – ОШИБКА, создающая одну из платформ: Код ошибки 1 для команды: Как загружать изображения из URL-адреса в виджет приложения Android? Возможно ли выпустить обновленное приложение, подписав его с другим сертификатом, чем тот, который первоначально использовался Android-чек имеет активный телефонный звонок Невозможно добавить двойной SharedPreferences Кордова Ошибка при использовании Cordova-Android 6.2.0 – getFileResources не является функцией Android Studio Refresh Layout без восстановления проекта Android: ListView с EditTexts помещает фокус и IME Как поддерживать несколько слоев ImageViews и сохранять их соотношение сторон на основе самого большого? EditTexts внутри ExpandableListView Возможно ли, что при нажатии кнопки edittext появится диалоговое сообщение? Имитация кнопки питания для отображения диалогового окна выключения Можно ли использовать android.hardware.camera2.CaptureRequest с OpenCV? Android: установка Редактирование текста или текстового вида Уведомление о блокировке Android Facebook

Настройте Gradle для выполнения этапа пользовательской сборки перед началом компиляции

Я начал использовать Gradle сегодня и после поиска в течение часа, а также каждый возможный ответ от SO (например, 1 ) и разных блогов (например, 2 ) и документации (например, 3 ) Мне нужна помощь.

Мой вопрос прост: как выполнить пользовательский шаг сборки (в моем случае выполнение ndk-build с помощью настроенного Android.mk) в рамках обычного процесса сборки?

Файл build.gradle выглядит так:

import org.apache.tools.ant.taskdefs.condition.Os apply plugin: 'com.android.application' android { compileSdkVersion 19 buildToolsVersion "21.1.2" defaultConfig { applicationId "myApp.prototype" minSdkVersion 16 targetSdkVersion 19 testApplicationId "myApp.prototype.test" testInstrumentationRunner "android.test.InstrumentationTestRunner" } sourceSets.main.jni.srcDirs = [] task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') { def rootDir = project.rootDir def localProperties = new File(rootDir, "local.properties") Properties properties = new Properties() localProperties.withInputStream { instr -> properties.load(instr) } def ndkDir = properties.getProperty('ndk.dir') println ndkDir if (Os.isFamily(Os.FAMILY_WINDOWS)) { commandLine "$ndkDir\\ndk-build.cmd", 'NDK_PROJECT_PATH=build/intermediates/ndk', 'NDK_LIBS_OUT=src/main/jniLibs', 'APP_BUILD_SCRIPT=src/main/jni/Android.mk', 'NDK_APPLICATION_MK=src/main/jni/Application.mk' } else { commandLine "$ndkDir/ndk-build", 'NDK_PROJECT_PATH=build/intermediates/ndk', 'NDK_LIBS_OUT=src/main/jniLibs', 'APP_BUILD_SCRIPT=src/main/jni/Android.mk', 'NDK_APPLICATION_MK=src/main/jni/Application.mk' } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile 'com.android.support:appcompat-v7:20.+' compile 'com.google.android.gms:play-services-location:6.5+' compile 'com.android.support:support-v4:19.1.0' compile 'com.google.code.gson:gson:2.2.4' compile fileTree(dir: new File(buildDir, 'libs'), include: '*.jar') } 

При выполнении gradle ndkBuild из командной строки все работает нормально. Но я хочу, чтобы Android Studio автоматически запускала ndkBuild, когда выполняла остальные процедуры компиляции Android (такие как generateDebugSources, preBuild, preDebugBuild, …).

Я попытался приложить себя к этим событиям следующим образом:

 gradle.projectsEvaluated { preBuild.dependsOn(ndkBuild) } 

Но независимо от того, где я помещаю этот код или какую задачу я использую из множества доступных задач (при выполнении задач градиента), ничего не работает.

Solutions Collecting From Web of "Настройте Gradle для выполнения этапа пользовательской сборки перед началом компиляции"