应用程序在调试期间在手机上工作,在安装apk时不起作用

时间:2016-10-11 13:25:29

标签: android gps ksoap fusedlocationproviderapi

我制作了一款使用GPS,互联网,FusedAPI和KSOAP的应用。当我使用android studio在我的手机上调试应用程序时,该应用程序工作正常。但是,当我创建apk(已签名)时,处理Google Map,Fused API和GPS的活动不起作用。我只能看到屏幕闪烁,应用程序返回到之前的活动。

任何人都可以告诉我可能出现的问题。

build.gradle(Module)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1"

    dexOptions {
        javaMaxHeapSize "4g"
    }

    defaultConfig {
        multiDexEnabled true
        applicationId "online.hannuveda.transafe_rx"
        minSdkVersion 11
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.0'

    compile files('libs/ksoap2-android-assembly-2.4-jar-with-dependencies .jar')
    compile 'com.google.android.gms:play-services:9.4.0'
    compile 'com.google.maps.android:android-maps-utils:0.3+'
    compile 'com.github.aakira:expandable-layout:1.6.0@aar'
}

build.gradle(Project)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

1 个答案:

答案 0 :(得分:0)

由于您使用的是google-play-services依赖关系('com.google.android.gms:play-services:9.4.0'),因此您应该声明类型为MultidexApplication的应用程序。

目前,您刚刚将multiDexEnabled true添加到应用级build.gradle文件,这对于multidex配置来说还不够。您还应该对Manifest和依赖项进行更改。无论如何,说明如下:

1-将multidex依赖项添加到您的应用级build.gradle

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

2-在app level build.gradle中的defaultConfigs中启用multidex:

android {

defaultConfig {
    ...

    // Enabling multidex support.
    multiDexEnabled true
   }
...
}

3-定义一个新类MyApplication,它扩展了MultidexApplication,它将作为应用程序的入口点。

public class MyApplication extends MultidexApplication

4-最后,您应该在AndroidManifest.xml中声明这个新类

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package.name">

<application
    android:name=".path-to.MyApplication">
    ...
</application>
</manifest>