Я создал библиотеку андроида, он содержит класс активности, который использует, чтобы открыть намерение камеры, библиотека отлично работает за исключением части, которая вызывает действие, которое появляется над экраном, и приложение вылетает, бросая следующие ошибки.
Suppressed: java.lang.ClassNotFoundException: com.me.scanner.ScannerViewActivity
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 14 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
Ниже представлен мой файл build.gradle
другого проекта, который будет использовать эту библиотеку
repositories {
flatDir {
dirs 'libs'
}
}
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'
})
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.me.app:[email protected]'
compile ('com.me.app:[email protected]'){ transitive = true; }
testCompile 'junit:junit:4.12'
}
Обратите внимание:
-
Эта библиотека отлично работает как проект модуля,
compile project(':scannercontrol')
но не при использовании его как
aar
в проекте -
Я пробовал с и без
{ transitive = true; }
, без изменений - Я переименовал свой файл aar в
scanner.aar
- Я принял форму aar файла
/[library-project]/build/outputs/aar/scanner-release.aar
Update1 - 2017-09-14
Активность ScannerViewActivity
является частью моей библиотеки, вот как она вызывается из одного из классов библиотеки
Intent scannerView = new Intent();
scannerView.putExtra(MESSAGE_RECEIVER, new MessageReceiver());
scannerView.setClass(context, ScannerViewActivity.class);
scannerView.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(scannerView);
этот context
является экземпляром android.app.Application
, а не любого Activity
Update2 - 2017-09-14
К счастью, после роуминга 2 дня по всему Google я сталкиваюсь с ответом на вопрос Класс, не найденный в aar. Я добавил зависимости библиотеки к проекту и смог запустить ее с помощью aar
, но это не решение моей проблемы,
Ниже приведен поток и проблема, с которой я сейчас сталкиваюсь
-
Я разрабатываю версию с песочницей библиотеки, которая обменивается данными со специальным оборудованием сканера штрих-кода, поскольку разработчик не обязательно имеет аппаратное обеспечение, которое будет использовать версию библиотеки песочницы, которая позволит разработчику использовать их устройство в качестве сканера штрих-кода,
-
Мы хотим, чтобы разработчик извлекал
aar
файлыscanner.aar
иscanner-sandbox.aar
из предоставленногоSDK
и использовал любой из них -
Мы не хотим, чтобы разработчик добавлял дополнительную зависимость к своему файлу
.gradle
, если они хотят запустить версию библиотеки для песочницы, -
Ниже приведена зависимость, которая используется для имитации камеры устройства в качестве сканера штрих-кода.
compile 'me.dm7.barcodescanner:zxing:1.9.8'
Обновленный вопрос
Каков возможный способ распространения файла aar без их публикации в каком-либо репозитории, таком как maven репозиторий и все зависимости библиотеки, установленной, когда разработчик синхронизирует файл .gradle