我正在使用android studio开发Android应用程序。我有一个项目有两个模块作为库,两个模块都有很少的库共同(.so文件)由于这个我得到多dex问题。以下是gradle消息
> 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 = /家庭/英特尔/ Takencode /的Android / SDK
ndk.dir = /家庭/英特尔/ Takencode / Android设备/ NDK
上述错误还有其他解决办法吗?任何建议
答案 0 :(得分: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
答案 1 :(得分:0)
你可以尝试一下!
sourceSets { main { jni.srcDirs = [] assets.srcDirs = [] //disable automatic ndk-build call } }
答案 2 :(得分:0)
最后经过谷歌搜索后我纠正了这些问题。上述问题出了问题。
Case 1
:在模块中我有jni和jnilibs几个常见的文件(.so文件)...所以我删除了jni文件夹,因为它包含相同的.so文件...删除冗余和冲突来自该项目。
Case 2
:可能存在模块(库)和主项目的主题,图标不同(在AndroidManifest.xml
文件中定义)的情况。为了纠正清单文件的外观...使模块和主项目主题相同..
在我的案例模块中有以下主题
android:theme="@style/AppTheme"
和主要项目有
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
所以我改变了与项目主题相同的模块主题。
还在清单标记
下面添加以下行xmlns:tools="http://schemas.android.com/tools"
在行上方添加以下行添加到应用程序标记
tools:replace="android:icon,android:theme"
现在它完美无瑕。