Mam bibliotekę Android AAR. Jedna zasada bezpieczeństwa, którą chcę narzucić konsumentowi w aplikacji mojej biblioteki, polega na tym, że nie może ona używać mojej biblioteki, gdy jest ona prawdziwa lub apk jest tworzony przy użyciu . Jak mogę to sprawdzić programowo w systemie Android ?Jak sprawdzić typ kompilacji debuggable lub debug w bibliotece Androida?
Odpowiedz
istnieje obejście z refleksji w celu uzyskania (nie biblioteki) wartość BuildConfig projektu tak:
/**
* Gets a field from the project's BuildConfig. This is useful when, for example, flavors
* are used at the project level to set custom fields.
* @param context Used to find the correct file
* @param fieldName The name of the field-to-access
* @return The value of the field, or {@code null} if the field is not found.
*/
public static Object getBuildConfigValue(Context context, String fieldName) {
try {
Class<?> clazz = Class.forName(context.getPackageName() + ".BuildConfig");
Field field = clazz.getField(fieldName);
return field.get(null);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
Aby uzyskać pole DEBUG
, na przykład, po prostu zadzwoń to z biblioteki Activity
:
boolean debug = (Boolean) getBuildConfigValue(this, "DEBUG");
Nie próbowałem tego jeszcze i nie mogę zagwarantować, że będzie działać cały czas, ale możesz iść dalej !!!
wydaje się być legit. Postaram się poinformować o wyniku. –
Przetestowałem to rozwiązanie i działa. –
cieszę się, że mogę pomóc !!! – matrix
- 1. Jak sprawdzić, czy typ kompilacji katalogu kompilacji CMake to Debug lub Release?
- 2. Gitignore nie ignoruje niektórych plików kompilacji w bibliotece Androida
- 3. resConfigs na typ kompilacji
- 4. Jak napisałbyś @debuggable decorator w python?
- 5. JavaScript jako debuggable bytecode
- 6. Składnik Chips w bibliotece wsparcia Androida?
- 7. Jak sprawdzić typ pola struct w eliksiru?
- 8. Woocommerce - Jak sprawdzić typ produktu w wtyczce
- 9. Jak mogę sprawdzić błędy kompilacji w pythonie?
- 10. Jak sprawdzić zasób zasobów Androida?
- 11. Jak sprawdzić, czy aplikacja .NET została skompilowana w trybie DEBUG lub RELEASE?
- 12. SML Jak sprawdzić typ zmiennej?
- 13. Jak sprawdzić typ widżetu widoku?
- 14. Tworzenie wersji Gradle nadal debuggable?
- 15. pakiet Android nie debuggable
- 16. Jak sprawdzić dodany typ pliku w PHP
- 17. Jak sprawdzić typ obiektu w C++/CLI?
- 18. Jak sprawdzić typ słownika w eliksiru
- 19. Jak sprawdzić typ ogólny w Kotlin?
- 20. CruiseControl.net - Jak sprawdzić kod podczas kompilacji
- 21. Sprawdzanie CRT używanego w bibliotece (.lib)
- 22. Ustawienie debug = false w web.config jako część kompilacji
- 23. Po raz pierwszy przewodnik po bibliotece Androida
- 24. Jak wykryć, czy typ jest wyrażeniem lambda w czasie kompilacji?
- 25. Czy Msbuild rozpoznaje jakiekolwiek konfiguracje kompilacji inne niż DEBUG | RELEASE
- 26. Jak mieć różne środowiska kompilacji dla Androida?
- 27. jak sprawdzić prawdziwy Internet podłączony do Androida?
- 28. Jak sprawdzić ogólny typ klasy to tablica?
- 29. Uzyskaj sumę kontrolną kodów źródłowych w bibliotece Androida.
- 30. Błąd kompilacji Androida Studio i Gradle
możesz sprawdzić bibliotekę 'build.gradle', aby wykryć czy debugujesz czy nie, ale w jaki sposób zamierzasz sprawdzić' build.gradle 'konsumenta? – matrix
@KostasDrakonakis to dokładnie ten problem :) –
@FarhadFaghihi, ale jaki jest tego powód? Ważne jest to, że twoja biblioteka nie znajduje się w debugowaniu. Wszyscy rozwijają aplikację w trybie debugowania. –