Jak korzystać z biblioteki obsługi Renderscript w Gradle

Czy jest możliwe użycie Wsparcie Biblioteki Renderscript z Gradle? Jeśli tak, to w jaki sposób uwzględniasz go w swoim projekcie?

Author: Austyn Mahoney, 2013-10-29

6 answers

Gradle dla Androida obsługuje teraz Renderscript v8 z tylko 2 liniami w skrypcie budowania. Zobacz odpowiedź Austyn Mahoney . Zachowanie oryginalnej odpowiedzi dla celów historycznych.


Stara Odpowiedź:

Gradle obsługuje natywną kompilację RS, ale nie bibliotekę obsługi RS. Powodem jest to, że biblioteka obsługi RS jest ogromnie skomplikowana w porównaniu do jakiejkolwiek innej biblioteki wsparcia. Biblioteka obsługi RS jest właściwie biblioteką obsługi Javy, a zestaw natywnych bibliotek wspierających bibliotekę Java lib, dodatkowe natywne biblioteki dla każdego kompilowanego skryptu oraz alternatywny łańcuch narzędzi do generowania zarówno standardowego kodu bitowego LLVM, jak i natywnych bibliotek dla skryptów. W tej chwili tylko ADT i Ant to wspierają; Gradle jeszcze nie ma.

Możliwe jest jednak korzystanie z niektórych części biblioteki obsługującej RS od Gradle. Jeśli chcesz użyć RS intrinsics, możesz połączyć część Java z biblioteką wsparcia (sdk/build-tools/android-4.3/lib/renderscript / renderscript-v8.jar) i natywne komponenty (sdk / build-tools / android-4.3 / lib / renderscript/ packaged //*. so), a następnie zostanie ustawiony.

Wiem, że wsparcie Gradle dla biblioteki wsparcia pojawi się w pewnym momencie w niezbyt odległej przyszłości, ale nie mam mocnej ETA, którą mogę podzielić.

 15
Author: Tim Murray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:42

Korzystanie Z Android Studio:

Dodaj następujące wartości do build.gradle dla android Gradle plugin v0.14+

android {
    ...
    defaultConfig {
        ...
        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true
    }
    ...
}

Dla starszych wersji wtyczki android gradle v0.13.3 i poniżej

android {
        ...
        defaultConfig {
            ...
            renderscriptTargetApi 19
            renderscriptSupportMode true
        }
        ...
    }

Gdy to zrobisz, użyj android.support.v8.renderscript. w dowolnym miejscu w aplikacji. Biblioteka jar i pliki binarne są dołączane automatycznie.

 120
Author: Austyn Mahoney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-17 14:29:53

Podążając za wskazówką Tima, udało mi się uzyskać wsparcie dla V8 pracując z Gradle, oto mój layout projektu:

Tutaj wpisz opis obrazka

Utworzyłem folder libs i skopiowałem pliki wymienione w folderze SDK. A oto Moja budowa.zmiany w gradle:

dependencies {
    compile files('libs/renderscript-v8.jar')
}

android {

    tasks.withType(com.android.build.gradle.tasks.PackageApplication) {
        pkgTask -> pkgTask.jniFolders = new HashSet<File>();
            pkgTask.jniFolders.add(new File(projectDir, 'libs'));
    }
}

Potem mogę zaimportować Androida.wsparcie.v8.renderscript.* i korzystać z wewnętrznych.

 6
Author: x.y,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-18 04:30:24

Wiem, że już na to odpowiedziałam, ale pomyślałem, że podzielę się moim doświadczeniem z obsługą Android-Studio i Renderscript z Build-tools 21.1.0. To jest to, co znalazłem w build-system changelog linie 26-32:

  • zmieniono nazwę kilku właściwości, aby rzeczy stały się bardziej spójne.
    • BuildType.runProguard - > minifyEnabled
    • BuildType.zipAlign - > zipAlignEnabled
    • BuildType.jniDebugBuild -> jniDebuggable
    • BuildType.renderscriptDebug - > renderscriptdebug
    • ProductFlavor.renderscriptSupportMode - > renderscriptSupportModeEnabled
    • ProductFlavor.renderscriptNdkMode - > renderscriptNdkModeEnabled

Więc widzisz, oni zmienili nazwę właściwości. Właśnie zaktualizowałem build.gradle do użycia:

RenderscriptSupportModeEnabled true

Teraz biblioteki są dodawane do projektu i nie trzeba ręcznie dodawać ich do folderu lib.

 2
Author: Joe3112,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-16 13:54:49

Istnieje eksperymentalne wsparcie w plugin Gradle Android w momencie pisania tego tekstu. Zobacz ten projekt testowy aby uzyskać więcej informacji.

 1
Author: tad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-07 01:35:45

Jeśli ktoś jest zainteresowany Jak spakować to jako dystrybuowalny plik binarny .jar (np. do wdrożenia do Maven repo) możesz użyć tej struktury plików dla swojego .słoik.

Ogólna struktura plikówZajęcia Java

Pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>android</groupId>
  <artifactId>renderscript</artifactId>
  <version>19.0.3</version>
  <description>Artifactory auto generated POM</description>
</project>

Do budowy.gradle, dodaj: compile 'android:renderscript:19.0.3' do swoich zależności clojure.

PS: biblioteka renderscript nie będzie działać na armv6( armeabi), więc upewnij się, że Build.CPU_ABI jest albo armeabi-v7a, mips lub x86.

 1
Author: Sveinung Kval Bakken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 15:29:37