在Android Studio中使用一个项目构建创建多个apk文件

时间:2016-03-22 16:34:48

标签: android android-studio android-gradle

我的Android项目有两种口味,一种用于测试服务器,另一种用于生产。我将URL存储在字符串资源中,因此我可以根据我选择编译的风格访问正确的URL。通常我需要在一天内创建多个apk文件,每次都为两个服务器创建。

每次运行我的项目或从Build菜单构建apk时,有没有办法创建两个apk文件?

3 个答案:

答案 0 :(得分:9)

如果你有这样的事情:

TIdHTTP::Request::AcceptCharSet

您只需在Gradle项目中运行汇编

enter image description here

你可以找到所有不同的apks build / outputs / apk

enter image description here

希望这次我会更有帮助

答案 1 :(得分:2)

Mastering "Product Flavors" on Android

您唯一需要做的就是在每种产品口味中定义它:

android {  
    productFlavors {
        devel {
            applicationId "zuul.com.android.devel"
        }

        prod {
            applicationId "zuul.com.android"
        }
    }
}

根据风格向多个主机发送请求 和以前一样,您必须在产品风味配置字段中包含一些参数。

android {  
    productFlavors {
        devel {
            applicationId "zuul.com.android.devel"
            buildConfigField 'String', 'HOST', '"http://192.168.1.34:3000"'

        }

        prod {
            applicationId "zuul.com.android"
               buildConfigField 'String', 'HOST', '"http://api.zuul.com"'

        }
    }
}

作为一个例子,我们将尝试向您展示如何将其与Retrofit集成以向适当的服务器发送请求,而无需根据风格处理您指向的服务器。在这种情况下,这是Zuul Android应用程序的摘录:

public class RetrofitModule {

    public ZuulService getRestAdapter() {
        RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint(BuildConfig.HOST)
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .build();
        return restAdapter.create(ZuulService.class);
    }

}

正如您所看到的,您只需使用BuildConfigclass来访问您刚刚定义的变量。

答案 2 :(得分:1)

您可以在Gradle中使用此命令行:

./gradlew assemble

或者你可以分别为调试或发布生成所有口味的

./gradlew assembleDebug
./gradlew assembleRelase