Упорядочивание библиотек в Android gradle

#android #gradle #android-gradle-plugin

#Android #gradle #android-gradle-плагин

Вопрос:

Я внедряю функцию, которая требует доступа к «скрытому» Android API. Я знаю, что мог бы использовать Java-reflection, но у меня есть скомпилированный пользовательский Android jar с несколькими выбранными классами, которые больше не содержат «скрытого» поля, что позволяет мне получить доступ к определенным частям «частного» Android API.

В связи с тем, что мне нужно использовать ‘gradle’ для сборки моего проекта (требование моего учителя), я столкнулся с определенной проблемой.

В настоящее время у меня есть jar: android-custom.jar -> который содержит только «android.telephony.SmsMessage»

В Eclipse я могу изменить порядок библиотек, из которых берутся зависимости, но в Gradle кажется, что первая библиотека для обнаружения зависимостей взята из Android-sdk.

Что я хочу сделать, так это использовать мой android-custom.jar поверх Android-sdk, исключая их оба во время выполнения (либо Android.jar ни мой Android-custom.jar не будет привязан к моему apk, поэтому мой apk будет использоваться на устройстве Android.jar ).

Возможно ли это?

Ответ №1:

Это устранило мою проблему

 allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {            
            options.compilerArgs << '-Xbootclasspath/p:/home/open-android.jar'
        }
    }
}
  

Ответ №2:

Возможно, вам потребуется переопределить задачи compileDebugJava / compileReleaseJava своими собственными, которые включают пользовательский порядок библиотек. Смотрите здесь действительно старый пост на ту же тему, без Android.

Комментарии:

1. У меня была похожая идея, но я получаю следующее: не удается добавить задачу ‘:compileDebugJava’, поскольку задача с таким именем уже существует