Próbuję utworzyć bibliotekę Android zawierającą prostą usługę. Na przykład:Usługa zewnętrzna Android z biblioteki (AAR, nie wspólna usługa)
public class BasicService extends Service {
public BasicService() {
Log.d("I", "work");
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
ja uruchomić usługę w następujący sposób:
startService(new Intent(this, BasicService.class));
Usługa jest kompilowany do pliku AAR i po dodaniu do wniosku, że mogę dostać ClassNotFoundException.
Caused by: java.lang.ClassNotFoundException: Didn't find class "nl.company.example.library.Services.BasicService" on path: DexPathList[[zip file "/data/app/nl.example.aartest-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
Nie muszę wiązać usługi, ponieważ aplikacja nie musi komunikować się z usługą. Nie potrzebuję też interfejsu pomocy, ponieważ nie chcę udostępniać usługi innym aplikacjom. Wiem, że muszę zadeklarować usługę z boku aplikacji (nie biblioteki), więc zrobiłem to w następujący sposób:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nl.company.example.exampleApp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="19" />
<application
android:settings... >
<service
android:name="nl.company.example.library.Services.BasicService"
android:enabled="true"
android:exported="true" />
</application>
</manifest>
To manifest mojej bibliotece:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nl.company.example.library" >
<application/>
</manifest>
Robiłem niektóre badania w Stackoverflow/Google i nie byłem w stanie znaleźć odpowiedzi na mój problem.
próbował także różne sposoby uruchamiania usługi (w sprawie działania etc.), ale nie jest dobre do tej pory.
Cała pomoc jest mile widziana i przepraszam, jeśli zrobiłem zadane zła pytanie.
Istnieje niezgodność między twoją nazwą klasy "BasicService" a usługą, którą faktycznie uruchamiasz 'SimpleService'. Czy to może być problem? Próbowałem tego w repozytorium testowym i wygląda na to, że działa dobrze. Nie deklaruję usługi w manifeście mojej biblioteki, ale deklaruję ją w manifeście mojej aplikacji. Uruchamiam usługę w dokładnie taki sam sposób jak ty i włączasz bibliotekę za pośrednictwem lokalnego interfejsu. –
Witaj jmols, przepraszam, że pomyłkę sprawiłam, że problem był anonimowy. Dodano także manifest biblioteki. Mam nadzieję, że jesteś w stanie pomóc :) – jobbert
Twój kod wydaje mi się poprawny. Autouzupełnianie działa poprawnie? (W ten sposób jesteśmy pewni, że zależność jest zawarta poprawnie.) Jakiej wersji wtyczki Gradle używasz? Używam 'com.android.tools.build: gradle: 1.3.0'. –