繁体   English   中英

Android Studio Multidex和Ndk问题

[英]Android studio multidex And Ndk issue

我正在使用android studio开发android应用。 我有一个项目,其中有两个模块作为库,而这两个模块都没有几个库common(.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 /安卓/ SDK

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

对于上述错误还有其他解决方案吗? 任何建议

您必须在gradle添加支持库的依赖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线程

您可以尝试一下!

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

最后,经过大量的搜索后,我纠正了问题。以上问题出了点问题。

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"

现在它可以正常工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM