2016-09-20 32 views
7

Przed dokonaniem przełącznik AS 2.2, mam następującą strukturę do realizacji mojego CStudio 2.2 Android Native Development Migracja Issue

app/src/main/jni/Android.mk 
app/src/main/jni/Application.mk 
app/src/main/jni/headers/* 
app/src/main/jni/cfiles*.cc 

w tym przypadku wszystko dobrze zbudowany. Jednak po uaktualnieniu do AS 2.2, nie mogę budować jakiegokolwiek apk i zawsze otrzymasz następujący błąd:

Execution failed for task':app:transformNative_libsWithStripDebugSymbolForDebug java.lang.NullPointerException (no error message)

Czy ktoś wie dlaczego tak jest? Nie mogę znaleźć żadnej pracy.

Odpowiedz

1

Czułem, że wiele z tych rozwiązań było przesadą. Przepraszamy za odpowiedź na moje własne pytanie, ale faktyczne rozwiązanie zostało zaczerpnięte z prawie każdego posta tutaj!

Podobnie jak w przypadku @GregT, to, co sprawdziło się, to aktualizacja pakietu NDK, który zainstalowałem. I tak naprawdę zmodyfikował pliki *.mk, podobnie jak odpowiedź @ Matthew_Bondarchuk.

W związku z tym, jak powiedział @aaronvargas, jest to błąd; w szczególności system Android NDK nie był aktualizowany w połączeniu z aktualizacjami wprowadzonymi w Androidzie 2.2. Powoduje to niekompatybilność z narzędziami do budowania Androida, podobnymi do @Michael_Jess.

1

I rozwiązać ten problem w moim projekcie) spróbować dodać to do swojego build.gradle (moduł)

externalNativeBuild { 
    ndkBuild { 
     path 'src/main/jni/Application.mk' 
    } 
} 

Link Gradle to your native library

+0

Dziękuję. Spróbuję tego. – phatty

+0

To spowodowało usunięcie błędu "Wykonanie nie powiodło się dla zadania": aplikacja: transformNative_libsWithStripDebugSymbolForDebug', ale teraz otrzymuję komunikat "Android NDK: OSTRZEŻENIE: Nie ma modułów do zbudowania w tym projekcie!", Więc może będę musiał zmienić sposób natywnego kodu w moja aplikacja jest skompilowana z AS i Gradle. Próbuję zbudować aplikację Makeblock na Androida (https://github.com/Makeblock-official/Makeblock-App-For-Android), która zawiera natywny kod C. – HeatfanJohn

1

I przeniesieni do AS 2.2 rano i miał ten sam błąd. Aktualizacja NDK rozwiązała to dla mnie. Można uaktualnić poprzez SDK Managera teraz, instrukcje tutaj:

https://developer.android.com/studio/projects/add-native-code.html#download-ndk

także upewnić się, że „local.properties” plik jest skierowany do właściwej lokalizacji NDK. local.properties przykład Windows:

ndk.dir=C\:\\Users\\Me\\AppData\\Local\\Android\\sdk\\ndk-bundle 
sdk.dir=C\:\\Users\\Me\\AppData\\Local\\Android\\sdk 
0

Próbowałem różnych poprawek, które stały się jedną kwestię dla mnie było zmienić platformVersion od „19” został ustawiony, aby „21” w modelu {{android Sekcja ndk szablonu build.gradle aplikacji. Będzie to istotne tylko w wersji eksperymentalnej. Buduję z opcją compileSdkVersion ustawioną na 24 i buildToolsVersion na 24.0.2.

1

Wygląda na to, że jest to błąd w wersji 2.2.0 i wyższej w porównaniu do narzędzi do budowania androida. Powodując problemy w naszym środowisku CI.

Prosimy o sprawdzenie błędu poniżej!

https://code.google.com/p/android/issues/detail?id=223162

teraz mamy powrót do starej wersji narzędzia do 2.1.3

+0

Dziękujemy za udostępnienie tego. Uruchomiłem błąd, który faktycznie rozwiązuje problemy na razie. –

1

Mieliśmy ten sam błąd dzisiaj, w Rajawali projektu - Oznacza to, że nie wdrożył rodzimy komponentów, ale wykorzystała bibliotekę, która implementuje niektóre natywne komponenty OpenGL. Przypuszczam, że jest to w jakiś sposób powiązane z aktualizacją Android Studio (na tym komputerze, to było 2.2.3), ale nie mogę jasno powiedzieć w tym momencie. Po prostu "nagle przestał działać."

Musieliśmy jednak przeprowadzić aktualizację do eksperymentalnych narzędzi do budowania Androida: i zastosować poprawkę Mike'a powyżej, aby działała. (Nieco przestarzały) przewodnik migracji można znaleźć here. Dla porównania, musieliśmy dostosować tylko build.gradle i app/build.gradle, który teraz wyglądać następująco:

// build.gradle 
buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle-experimental:0.8.3' 
     // used to be: 'com.android.tools.build:gradle:2.2.2' 
    } 
} 

allprojects { 
    repositories { 
     mavenLocal() 
     jcenter() 
    } 
} 

... i

//app/build.gradle 
apply plugin: 'com.android.model.application' 
// used to be 'com.android.application' 

// android() migrated according to guide 
// note that buildConfigFields() is missing, because it lead to errors 
model { 
    android { 
     compileSdkVersion 19 
     buildToolsVersion "21.1.2" 

     defaultConfig { 
      applicationId "com.projecttango.experiments.augmentedrealitysample" 
      minSdkVersion.apiLevel 19 
      targetSdkVersion.apiLevel 19 
      versionCode 1 
      versionName "1.0" 
     } 

     buildTypes { 
      release { 
       minifyEnabled false 
       proguardFiles.add(file("proguard-rules.pro")) 
      } 
     } 

     productFlavors { 
      create("flavor1") { 
       applicationId "com.app" 
      } 
     } 

     sources { 
      main { 
       java { 
        source { 
         srcDir "src" 
        } 
       } 
      } 
     } 

     // Fix suggested by Mike above 
     ndk { 
      platformVersion 21 
     } 
    } 
} 

// Remaining Rajawali "noise" 
def external_lib_prefix = null 
if (project.hasProperty("Tango.catkin_devel_prefix")) { 
    external_lib_prefix = project.property("Tango.catkin_devel_prefix") 
} else { 
    // Building in standalone sample form. 
    external_lib_prefix = "../../TangoReleaseLibs" 
} 

repositories { 
    flatDir { 
     dirs external_lib_prefix + '/aar' 
    } 
} 

dependencies { 
    compile fileTree(dir: external_lib_prefix + '/jar', include: ['**/*.jar']) 
    compile (name: 'tango_support_java_lib', ext: 'aar') 
    compile 'org.rajawali3d:rajawali:[email protected]' 
} 

Gdy skończysz, upewnij się, aby zsynchronizować projektu Gradle w Androidzie Studio. W przeciwnym razie, gdy spróbujesz natychmiast uruchomić, zobaczysz coś takiego jak Task 'generateDebugSources' not found in project ':app'.

0

Zmień swoją konfigurację build.gralde w app-module:

compileSdkVersion 23 
buildToolsVersion "24.0.2" 

Oto moja konfiguracja compileSdkVersion i buildToolsVersion co sprawia, że ​​efekt mi się, że trzeba zaktualizować konfigurację compileSdkVersion i buildToolsVersion do najbardziej pasuje do twojego gradle-plugin version.

Jednym słowem, po uaktualnieniu gradle-plugin version, należy również zaktualizować konfigurację w build.gradle, aby upewnić się, że można uzyskać poprawny wynik.

Powiązane problemy