Android Studio: добавьте пользовательский jar в качестве зависимости - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть проект Java REST, который взаимодействует с проектом Android с использованием классов DTO .

Изначально я создавал классы DTO, дублированные в обоих проектах, но теперь у меня есть новыйJava / JAR проект с этими общими классами DTO, и я хочу использовать эту библиотеку в обоих проектах (Rest и Android).

Я вставил файл JAR в папку app/libs в Android Studio.

Я добавил этот файл в Jar-зависимость в Android Studio.

Файл build.gradle содержит эталонные файлы компиляции jar ('libs / my-custom-jar-1.0.0.jar')

dependencies {
    compile files('libs/my-custom-jar-1.0.0.jar')
    compile fileTree(include: ['*.jar'], dir: 'libs')
}

Я выполнил шаги, описанные здесь , но не работает.Классы, упакованные в JAR-файл, недоступны.

Я также пытаюсь «Отменить кэширование и перезапустить» Android Studio

[]

Редактировать

Файл build.gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    androidTestCompile 'com.google.code.findbugs:jsr305:3.0.2'
    compile project(':com.custom.dialog')
    compile project(':zxing_standalone')
    compile 'com.android.support:appcompat-v7:26.0.2'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.xxxxxxxx.android:library:1.0.23@aar', { transitive = true }
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-scalars:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
    compile 'com.squareup.okhttp3:okhttp:3.9.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
    compile 'com.android.support:design:26.0.2'
    compile 'commons-io:commons-io:2.0.1'
    compile 'org.apache.commons:commons-lang3:3.5'
    compile files('libs/my-custom-jar-1.0.0.jar')
}

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

A ) только добавьте эту строку:

implementation fileTree(dir: "libs", include: ["*.jar"])

и удалите эту строку:

compile files('libs/my-custom-jar-1.0.0.jar')

при добавлении обеих строк вы получитедубликаты зависимостей.

B ) и этой локальной зависимости AAR:

compile 'com.xxxxxxxx.android:library:1.0.23@aar', { transitive = true }

требуется каталог libs, определенный как репозиторий flatDir в корневом каталогеbuild.gradle:

allprojects {
    repositories {
        ...
        flatDir { dirs "libs" }
    }
}
проекта
0 голосов
/ 05 декабря 2018

Убедитесь, что вы скопировали файл jar в свой проект, но ссылаетесь на очень старый пост.Нет необходимости добавлять дополнительную строку для файла jar, поскольку метод fileTree будет включать в себя все, что имеет расширение .jar из папки libs.

Я бы обновил свои зависимости следующим образом:

dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
}

Затем выполните синхронизацию gradle, и ваши файлы должны быть доступны вам.

EDIT Реальная проблема заключается в порядке аргументов.Вы хотите передать каталог в качестве первого аргумента.fileTree создает ConfigurableFileTree, поэтому первым аргументом должен быть базовый каталог.

UPDATE Вот как выглядит мой проект после сборки .jar и вставки его в мой проект, используя приведенный вышезависимости и синхронизация gradle.libs folder with .jar

И это доступно из моего кода активности:

public class MainActivity extends AppCompatActivity {

    PersonDAO personDao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        personDao = new PersonDAO("John", "Smith", 50);
    }

    public void doSomething(View view){
        Toast.makeText(this, getString(R.string.greeting, personDao.getFirstName()), Toast.LENGTH_SHORT).show();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...