Ho bisogno di avere un file jar situato in una directory principale/delle risorse all'interno di un progetto Android. È importante che il file jar si trovi lì.Come mantenere un file jar esterno, ma continui a utilizzare le sue classi nel mio progetto Android?
Con il mio principale progetto Android c'è un modo per fare riferimento a questo file jar nel mio codice e di utilizzare le sue classi?
Per essere chiari, non desidero aggiungere il jar al progetto principale una volta compilato.
EDIT: Ho provato il collegamento seguente e sembra che carichi il file di classe che ho indicato. Ma sto cercando di definire come definire gli argomenti del costruttore per la classe caricata dinamicamente.
android-custom-class-loading-sample
EDIT2
Ci siamo quasi. Ho confermato che la classe è stata caricata dal mio classes.jar. Sono bloccato a istanziare però.
Sulla linea licenseValidatorClazz.getConstructor ottengo l'errore sotto. Immagino che mi manchi qualcosa del mio file di interfaccia?
java.lang.NoSuchMethodException: [Interfaccia com.google.android.vending.licensing.Policy, interfaccia com.google.android.vending.licensing.DeviceLimiter, interfaccia com.google.android.vending.licensing.LicenseCheckerCallback, int, classe java.lang.String, java.lang.String classe]
public Class licenseValidatorClazz = null;
public LicenseValidator validator;
...
// Initialize the class loader with the secondary dex file.
DexClassLoader cl = new DexClassLoader(dexInternalStoragePath.getAbsolutePath(),
optimizedDexOutputPath.getAbsolutePath(),
null,
mContext.getClassLoader());
try {
// Load the library class from the class loader.
licenseValidatorClazz = cl.loadClass("com.google.android.vending.licensing.LicenseValidator");
validator = (LicenseValidator) licenseValidatorClazz.getConstructor(Policy.class,DeviceLimiter.class,LicenseCheckerCallback.class,int.class,String.class,String.class).newInstance(ddd, new NullDeviceLimiter(),
callback, generateNonce(), mPackageName, mVersionCode);
} catch (Exception exception) {
// Handle exception gracefully here.
exception.printStackTrace();
}
ho un'interfaccia che contiene le funzioni per passare alla classe caricata.
public interface LicenseValidator
{
public LicenseCheckerCallback getCallback();
public int getNonce();
public String getPackageName();
public void verify(PublicKey publicKey, int responseCode, String signedData, String signature);
public void handleResponse(int response, ResponseData rawData);
public void handleApplicationError(int code);
public void handleInvalidResponse();
}
quale strumento di costruzione stai usando? – AesSedai101
Sto utilizzando Android Studio. – zeroprobe