Utworzyłem bibliotekę androidów, zawiera ona klasę aktywności, która służy do otwierania intencji kamery, biblioteka działa idealnie z wyjątkiem części, która wywołuje działanie w celu wyświetlenia. ekran i rzucanie awarii aplikacji następujące błędyKlasa aktywności nie może zostać znaleziona w pliku AAR java.lang.NoClassDefFoundError
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
Obserwuje jest mój plik build.gradle
z innego projektu, które będą korzystać z tej biblioteki
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'
}
Uwaga:
Ta biblioteka działa doskonale jako projekt modułu
compile project(':scannercontrol')
ale nie podczas używania go jako
aar
w projekciepróbowałem zi bez
{ transitive = true; }
, bez zmian- Zmieniam nazwę pliku AAR na
scanner.aar
- Brałem postać pliku AAR
/[library-project]/build/outputs/aar/scanner-release.aar
Update1 - 2017-09-14
Aktywność ScannerViewActivity
jest częścią mojej bibliotece, to jak to jest nazywany od jednej klasy biblioteki
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);
to context
jest wystąpienie android.app.Application
nie któregokolwiek Activity
Update2 - 2017-09-14
szczęście po 2 dni w roamingu na całym Google I natknąć na odpowiedź z pytaniem Class not found in aar.Dodałem zależności biblioteki do projektu i jest w stanie uruchomić go z aar
ale to nie jest rozwiązanie mojego problemu,
Poniżej przepływ i problem mam obecnie przed
Zajmuję się wersją piaskownicy biblioteki, która komunikuje się z konkretnym sprzętem do skanowania kodów kreskowych, ponieważ programista niekoniecznie musi mieć sprzęt, z którego będzie korzystać w wersji biblioteki piaskownicy, która umożliwi programistom korzystanie z ich kamery urządzenia jako skaner kodów kreskowych,
Chcemy deweloper, aby wyodrębnić pliki
scanner.aar
AAR
iscanner-sandbox.aar
od przewidzianegoSDK
i użyć jednej z nichNie chcemy się z deweloperem, aby dodać dodatkową zależność ich pliku
.gradle
jeśli chcą uruchomić wersję piaskownicy biblioteki,Poniżej zależność, który jest używany do symulacji kamery urządzenia jako skanera kodów kreskowych
compile 'me.dm7.barcodescanner:zxing:1.9.8'
Zaktualizowane pytanie jest
Jaki jest możliwy sposób rozpowszechniać plik AAR bez publikowania ich na dowolnym repozytorium jak maven repozytorium i wszystkimi zależnościami biblioteki zainstalowane kiedy deweloper synchronizuje plik .gradle
sprawdź zależności w ustawieniach modułu projektu. musisz ponownie dołączyć tę zależność. – james
Kliknij prawym przyciskiem myszy na swój projekt> Otwórz ustawienie modułu. I widać kartę zależności. załóż tam swój plik/bibliotekę. – james
możesz znaleźć folder com.me.app:scanner w folderze ~ \ .gradle \ caches \ modules-2 \ files-2.1 – sanemars