2016-09-20 4 views
7

Перед тем, как переключатель AS 2.2, я иметь следующую структуру для реализации моего CAndroid Studio 2.2 Миграция Развитие Native Выпуск

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

в этом случае все построено хорошо. Однако, после обновления до AS 2.2, я не могу построить любой APK и всегда получить следующее сообщение об ошибке:

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

Кто-нибудь знает, почему это? Кажется, я не могу найти работу.

ответ

1

Я чувствовал, что многие из этих решений были излишними. Извините за ответ на мой собственный вопрос, но фактическое решение было взято из примерно каждого сообщения здесь!

Как и то, что сказал @GregT, для меня работала модернизация пакета NDK, который я установил. И, сделав это, на самом деле изменили файлы *.mk, как и ответ на вопрос Мэтью_Бондарчука.

Следовательно, как сказал @aaronvargas, это ошибка; в частности, система Android NDK не обновлялась в связи с обновлениями, которые были установлены в Android Studio 2.2. Это приводит к несовместимости с инструментами сборки Android, как это сказал @Michael_Jess.

1

Я решил эту проблему в моем проекте) попытаться добавить это в ваш build.gradle (модуль)

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

Link Gradle to your native library

+0

спасибо. Я попробую. – phatty

+0

Это устранило ошибку «Выполнение не выполнено для задачи»: app: transformNative_libsWithStripDebugSymbolForDebug', но теперь я получаю сообщения «Android NDK: WARNING: нет модулей для создания этого проекта!», Поэтому мне может потребоваться изменить способ использования собственного кода в мое приложение скомпилировано с AS и Gradle. Я пытаюсь создать приложение Makeblock для Android (https://github.com/Makeblock-official/Makeblock-App-For-Android), которое содержит собственный C-код. – HeatfanJohn

1

я повышен до AS 2.2 утром и имел такую ​​же ошибку. Модернизация NDK решила его для меня. Вы можете обновить с помощью SDK Manager, теперь инструкции здесь:

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

Также убедитесь, что ваш файл «local.properties» указывает на правильное местоположение НДК. Пример для Windows local.properties:

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

Я пробовал различные твики, тот, который зафиксировал проблему для меня изменял platformVersion от «19» был установлен, чтобы «21» в модели {{андроида ndk в файле build.gradle приложения. Это будет актуально только в экспериментальной версии. Я создаю с compileSdkVersion, установленным в 24, и buildToolsVersion в 24.0.2.

1

Это, кажется, ошибка с 2.2.0 и более поздней версией инструментов сборки android для градации. Вызвать проблемы в нашей среде CI.

Пожалуйста, нанесите ошибку ниже!

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

сейчас мы возвращаемся к старой версии инструментов 2.1.3

+0

Благодарим вас за это. И я сделал ошибку, которая фактически решает проблемы на данный момент. –

1

Мы имели ту же ошибку сегодня, в Rajawali проекте - то есть, мы не реализовали родные но использует библиотеку, которая реализует некоторые собственные компоненты OpenGL. Я полагаю, что это как-то связано с обновлением Android Studio (на этой машине было 2.2.3), но я не могу четко сказать на этом этапе. Это просто «внезапно перестало работать».

Однако нам нужно было перейти на экспериментальные инструменты для сборки Android и применить исправление Майка выше, чтобы заставить его работать. A (несколько устаревшее) руководство по миграции можно найти here. Для справки, нам нужно настроить только build.gradle и app/build.gradle, которые теперь выглядят следующим образом:

// 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() 
    } 
} 

... и

//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]' 
} 

После того, как вы закончите, убедитесь, что для синхронизации проекта Gradle в Android Студия. В противном случае, когда вы попытаетесь запустить сразу, вы увидите что-то вроде Task 'generateDebugSources' not found in project ':app'.

0

Обновите конфигурацию build.gralde в приложение-модуль:

compileSdkVersion 23 
buildToolsVersion "24.0.2" 

Вот моя конфигурация compileSdkVersion и buildToolsVersion, что делает эффект мне, что вам необходимо обновить конфигурацию compileSdkVersion и buildToolsVersion к большинство соответствует одному вашему gradle-plugin version.

Одним словом, как только вы обновите свой gradle-plugin version, вы также должны обновить свою конфигурацию в build.gradle, чтобы убедиться, что вы можете получить правильный результат.