2015-11-27 118 views
1

我正在使用android studio開發android應用程序。我有一個項目,其中有兩個模塊作爲庫,並且這兩個模塊都具有很少的庫(.so文件),因此我得到了多重dex問題。下面是gradle這個消息Android studio multidex和Ndk問題

> Error:Execution failed for task ':ftrScanApiAndroidHelperUsbHost:compileReleaseNdk'. 
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/home/intel/BackUp/Ndk/ndk-build'' finished with non-zero exit value 2 

我想下面這個問題的解決方案,但這並沒有爲我

defaultConfig{ 
     multiDexEnabled true 
    } 

的build.gradle文件工作:

> apply plugin: 'com.android.application' // apply plugin: 'android' 
> 
> android { 
> 
>  signingConfigs { 
>   config { 
>    keyAlias 'xxx' 
>    keyPassword 'xxx' 
>    storeFile file('/home/intel/Downloads/xxx.jks') 
>    storePassword 'xxx' 
>   } 
>  } 
>  compileSdkVersion 21 
>  buildToolsVersion '21.1.2' 
>  defaultConfig { 
>   applicationId 'com.xxxx.xxx.xxx' 
>   minSdkVersion 14 
>   targetSdkVersion 14 
>   versionCode 3 
>   versionName "1.2" 
>   signingConfig signingConfigs.config 
>   multiDexEnabled true 
>  } 
>  buildTypes { 
>   release { 
>    minifyEnabled false 
>    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
>    signingConfig signingConfigs.config 
>   } 
>   debug { 
>    signingConfig signingConfigs.config 
>   } 
>  } 
>  productFlavors { 
>  } 
>  sourceSets { 
>   main { 
>    jni.srcDirs = [] 
>    assets.srcDirs = ['src/main/assets', 'src/main/assets/'] 
>   } 
>  } 
> 
> } 
> 
> dependencies { 
>  compile 'com.android.support:appcompat-v7:21.0.3' 
>  compile 'com.google.android.gms:play-services:+' 
>  compile project(':pulltorefresh') 
>  compile 'com.google.code.gson:gson:2.3.1' 
>  compile files('libs/ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar') 
>  compile files('libs/possdk.jar') 
>  compile project(':ftrScanApiAndroidHelperUsbHost') 
>  compile project(':ftrWsqAndroidHelper') } 

下面local.properties :

sdk.dir =/home/intel/Takencode/Android/SDK

ndk.dir = /家庭/英特爾/ Takencode /安卓/ NDK

是否有上述錯誤沒有其他解決辦法?任何建議

+0

你在android棒棒糖中試用過嗎? –

+0

你的意思是說編譯sdk版本...棒棒​​糖? @FabinPaul –

+0

您是否在棒棒糖設備/模擬器上運行應用程序? –

回答

0

最後google搜索了很多後,我糾正這種不順心的上述問題issues.Things。

Case 1:在模塊我有JNI和jnilibs常見的幾個文件(.so文件)...所以我要刪除的JNI文件夾,因爲它包含相同的.so文件......從項目中消除冗餘和衝突。

Case 2:可能存在模塊(庫)和主項目的主題,圖標不同(在AndroidManifest.xml文件中定義)的情況。爲了糾正清單文件的外觀...使模塊和主項目主題相同。具有低於其

android:theme="@android:style/Theme.Holo.Light.NoActionBar" 

所以我改變模塊的主題相同項目的主題主題

android:theme="@style/AppTheme" 

與主體工程

在我的案例模塊。

同時添加下面一行的表現標籤

xmlns:tools="http://schemas.android.com/tools" 

一旦上面一行添加下面的行添加到應用程序標籤

tools:replace="android:icon,android:theme" 

現在它的工作完美無瑕。

1

您必須添加在你gradle

compile 'com.android.support:multidex:1.0.1' 

支持庫的依賴性如果你已經有了,你必須改變,而不是延長Application你有一個自定義的應用程序擴展了類MultiDexApplication這樣

MyApplication extends MultiDexApplication { 

} 

如果您還沒有任何自定義應用程序類只需要在清單中添加這個應用標籤內

<application 
    android:name="android.support.multidex.MultiDexApplication"> 
</application> 

如果您不需要整個play service您可以刪除依賴和只添加那些你需要這樣的

compile 'com.google.android.gms:play-services-gcm:8.1.0' 
compile 'com.google.android.gms:play-services-maps:8.1.0' 
compile 'com.google.android.gms:play-services-location:8.1.0' 

則沒有必要依賴,使您的應用程序MultiDex

對於ndk你可以看到這SO Thread

0

你可以給它一個試試吧!

sourceSets { 
    main { 
     jni.srcDirs = [] 
     assets.srcDirs = [] //disable automatic ndk-build call 
    } 
} 
+0

沒有工作.. :( –

+0

如果你找到你的解決方案。試試發佈... – johnrao07

+0

發佈...希望它可以幫助別人.. –