Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android Gradle:在一台设备上安装所有构建类型大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在使用GCM,ContentProvider,AccountType时,如何配置项目以便能够在发布版本旁安装调试版本? (不使用口味)

我不断收到错误,例如:@L_489_1@或INSTALL_FAILED_DUPLICATE_PERMISSION

解决方法

如果您只使用构建类型而不是风味,则在同一设备上安装调试apk和发行版apk很棘手( Why Build types and not flavors)

大多数博客文章要么过时(谈论packageName),要么是force you to use flavors,因为他们提出的解决方案@L_673_9@applicationIdSuffix,而构建类型不能声明applicationId,因此你需要使用一种风格

我建议使用的解决方

>每种构建类型的权限
>每种构建类型的帐户类型
>每种构建类型的GCM权限

为此,我在Gradle文件中使用applicationIdSuffix,manifest placeholders,BuildConfigField和resValue.

剩下的唯一问题是当你想为app和每种语言设置一个不同的名字时,字符串不会被设置为可翻译(bug aosp tracker)
这会强制您将abortOnError设置为false,否则您将无法进行发布构建.

的build.gradle

project.ext {
    defaultApplicationId = "com.myapp.package"
}
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId defaultApplicationId

        manifestPlaceholders = [ applicationIdWithSuffix: "${applicationID}" ]

        buildConfigField "String","ACCount_Type","\"${applicationID}\""
        buildConfigField "String","AUTHORITY","\"${applicationID}.provider\""

        resValue "String","acCount_Type","${applicationID}"
        resValue "String","authority","${applicationID}.provider"
    }
    buildTypes {
        debug {
            applicationIdSuffix ".debug"
            debuggable true

            manifestPlaceholders = [ applicationIdWithSuffix: defaultApplicationId + ".debug" ]

            buildConfigField "String","\"${defaultApplicationID}.debug\""
            buildConfigField "String","\"${defaultApplicationID}.debug.provider\""

            resValue "String","${defaultApplicationID}.debug"
            resValue "String","${defaultApplicationID}.debug.provider"
        }
    }
    lintOptions {
        abortOnError false
    }
}

AndroidManifest.xml中

<manifest xmlns:android="http://scheR_770_11845@as.android.com/apk/res/android"
    package="com.mypackage" >

    <permission
        android:name="${applicationIdWithSuffix}.permission.C2D_messaGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="${applicationIdWithSuffix}.permission.C2D_messaGE" />

    <application
        android:label="@String/app_name" >

        <provider
            android:name=".MyContentProvider"
            android:authorities="${applicationIdWithSuffix}.provider"
            android:exported="false"
            android:multiprocess="true" />
    </application>
</manifest>

同步适配器xml

<sync-adapter
    xmlns:android="http://scheR_770_11845@as.android.com/apk/res/android"
    android:contentAuthority="@String/authority"
    android:accountType="@String/acCount_Type"/>

帐户验证者

<account-authenticator
    xmlns:android="http://scheR_770_11845@as.android.com/apk/res/android"
    android:accountType="@String/acCount_Type"
    .../>

内容提供商

我有一个常量,用于从BuildConfig获取它.

AUTHORITY = BuildConfig.AUTHORITY

帐户类型

获取帐户类型,您也可以从BuildConfig获取它.

BuildConfig.ACCount_Type

多语言应用名称

如果你想要每个应用程序不同的名称和语言:

调试/值/ Strings.xml中

<resources>
    <String name="app_name">MyApp debug EN</String>
</resources>

调试/值-FR / Strings.xml中

<resources>
    <String name="app_name">MyApp debug FR</String>
</resources>

主/值/ Strings.xml中

<resources>
    <String name="app_name">MyApp EN</String>
</resources>

主/值-FR / Strings.xml中

<resources>
    <String name="app_name">MyApp FR</String>
</resources>

大佬总结

以上是大佬教程为你收集整理的Android Gradle:在一台设备上安装所有构建类型全部内容,希望文章能够帮你解决Android Gradle:在一台设备上安装所有构建类型所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。