2016-09-20 57 views
7

使切換到AS 2.2之前,我有以下的結構來實現我的C的Android Studio 2.2中本地開發移民問題

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

在這種情況下,一切建造的罰款。然而,在升級到2.2 AS後,我不能建立任何APK,總是收到以下錯誤:

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

有誰知道這是爲什麼?我似乎無法找到解決辦法。

回答

1

我覺得很多這些解決方案是過度殺傷。很抱歉回答我自己的問題,但實際的解決方案是從幾乎每一個職位在這裏!

就像@GregT說的一樣,對我來說有效的是升級我安裝的NDK軟件包。而且,這樣做實際上修改了*.mk文件,就像@ Matthew_Bondarchuk的答案一樣。

因此,就像@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:警告:在這個項目中沒有模塊可以建立消息,所以我可能需要改變本地代碼我的應用程序是用AS和Gradle編譯的。我試圖爲Android構建Makeblock應用程序(https://github.com/Makeblock-official/Makeblock-App-For-Android),其中包含本機C代碼。 – HeatfanJohn

1

我今天早上升級到AS 2.2和有同樣的錯誤。升級NDK爲我解決了它。現在,您可以通過SDK管理器升級,說明在這裏:

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

另外,還要確保你的「local.properties」文件指向正確的NDK位置。實例的Windows local.properties:

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

我在模型中嘗試了各種調整,即解決了該問題對我來說是改變從「19」它被設置爲platformVersion之一,以「21」 {{機器人ndk部分的應用程序的build.gradle。這隻會在實驗版本中相關。我正在編譯compileSdkVersion設置爲24和buildToolsVersion爲24.0.2。

1

這似乎是一個2.2.0及以上版本的gradle android構建工具的bug。在我們的CI環境中引起我的問​​題。

請爲下面的錯誤提供明星!

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

現在我們恢復到舊版本的工具2.1.3

+0

謝謝你分享這個。而且我確實啓動了這個錯誤,這實際上暫時解決了這些問題。 –

1

今天我們收到了同樣的錯誤,在一個Rajawali項目 - 也就是說,我們沒有實現本地組件,但使用了一個實現了一些原生OpenGL組件的庫。我想這與某個Android Studio更新有關(在該機器上,它是2.2.3),但我現在無法清楚地說明。它只是「突然停止工作」。

但是,我們需要升級到實驗性的Android構建工具,然後運用Mike的修復程序以使其工作。一個(有些過時的)移植指南可以在here找到。作爲參考,我們需要調整僅build.gradleapp/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]' 
} 

一旦完成,確保了項目的搖籃Android中同步工作室。否則,當您嘗試立即運行時,您會看到類似Task 'generateDebugSources' not found in project ':app'的東西。

0

升級您的build.gralde配置應用模塊:

compileSdkVersion 23 
buildToolsVersion "24.0.2" 

這裏是我的compileSdkVersion配置和buildToolsVersion這使得效果對我來說,你需要更新你的compileSdkVersionbuildToolsVersion配置到最匹配你的gradle-plugin version

總而言之,一旦您升級您的gradle-plugin version,您還應該升級您的配置build.gradle以確保您可以獲得正確的結果。