相关疑难解决方法(0)

如何在android studio中用gradle替换buildvariant的字符串?

我的项目有两种:

flavor1 -> packagename: com.example.flavor1 
flavor2 -> packagename: com.example.flavor2
Run Code Online (Sandbox Code Playgroud)

现在我想构建一个flavor1和flavor2的构造变量.buildvariant的唯一区别是另一个packagename.

我的项目使用MapFragments并且只有一个Manifest - 所以我将MAPS_RECEIVE的权限名称放在我各自风格的字符串资源文件中.

问题是:如何替换buildvariant的字符串资源?

我尝试了以下方法(在这篇文章中描述):

buildTypes{
    flavor1Rev{
        packageName 'com.example.rev.flavor1'
        filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: ['package_permission' : 'com.example.rev.flavor1.permission.MAPS_RECEIVE'])
    }
}
Run Code Online (Sandbox Code Playgroud)

但是使用这个我得到了这个错误:

找不到参数[{tokens = {package_permission = com.example.rev.flavor1.permission.MAPS_RECEIVE}}的方法filter(),BuildTypeDsl_D ecorated {name = ReplaceTokens,debuggable = false,jniDebugBuild = false,renderscript DebugBuild = false, BuildTypeD上的renderscriptOptimLevel = 3,packageNameSuffix = null,versionNameS uffix = null,runProguard = false,zipAlign = true,signingConfig = null}] sl_Decorated {name = buderusFinal,debuggable = false,jniDebugBuild = false,renderscr iptDebugBuild = false,renderscriptOptimLevel = 3 ,packageNameSuffix = null,versionNa meSuffix = null,runProguard = false,zipAlign …

android gradle android-studio build.gradle

25
推荐指数
2
解决办法
3万
查看次数

Crashlytics在运行时没有在crashlytics.properties中找到API密钥

我目前正在实现此处建议的API密钥切换脚本,除了使用构建类型而不是flavor.我的build.gradle看起来像这样:

...
buildTypes {
    debug {
        ...
        set("crashlyticsApiKey", "API_KEY_1")
        set("crashlyticsApiSecret", "API_SECRET_1")
    }
    release {
        ...
        set("crashlyticsApiKey", "API_KEY_2")
        set("crashlyticsApiSecret", "API_SECRET_2")
    }
}
...
productFlavors{...}
...
File crashlyticsProperties = new File("${project.projectDir.absolutePath}/crashlytics.properties")

applicationVariants.all { variant ->
    variant.productFlavors.each { flavor ->
        def variantSuffix = variant.name.capitalize()
        def generateResourcesTask = project.tasks.getByName("crashlyticsGenerateResources${variantSuffix}")
        def generatePropertiesTask = task("crashlyticsGenerateProperties${variantSuffix}") << {
            Properties properties = new Properties()
            println "...copying apiKey for ${variant.name}"
            properties.put("apiKey", variant.buildType.crashlyticsApiKey)
            println "...copying apiSecret for ${variant.name}"
            properties.put("apiSecret", variant.buildType.crashlyticsApiSecret)
            properties.store(new FileWriter(crashlyticsProperties), "")
        }
        generateResourcesTask.dependsOn generatePropertiesTask
        def cleanResourcesTask …
Run Code Online (Sandbox Code Playgroud)

java android properties-file crashlytics build.gradle

15
推荐指数
2
解决办法
7847
查看次数

Crashlytics - 不同gradle风味的不同包装名称

我正在尝试使用具有2种不同风格的Android Studio设置Android应用.每种风味都会更改packageName和applicationId - 因为我想将2个独立的APK作为2个不同的产品提交给Google Play.

我还尝试在Crashlytics中设置单独的应用程序,每种风格都有一个.虽然第一个创建没有任何问题,但当我切换味道时,Android Studio的Crashlytics插件仍然认为我的项目已经设置好了.因此,目前我无法正确设置我的Crashlytics以获得第二种口味.

在此先感谢您的任何建议.

android gradle crashlytics android-studio android-gradle-plugin

12
推荐指数
1
解决办法
4953
查看次数

具有多种口味的Crashlytics分销

我有多个flavors并试图分别使用Beta Distribution以下方式分发它们:

productFlavors {
    appOne{
        applicationId 'com.example.appOne'
        manifestPlaceholders = [ appName: "AppOne", fabricApiKey: "AppOne APi Key"]
    }
    appTwo{
        applicationId 'com.example.appTwo'
        manifestPlaceholders = [ appName: "AppTwo", fabricApiKey: "AppTwo APi Key"]
    }
Run Code Online (Sandbox Code Playgroud)

AndroidManifest:

<meta-data
    android:name="io.fabric.ApiKey"
    android:value="${fabricApiKey}" />
Run Code Online (Sandbox Code Playgroud)

我创建了两个不同的组织,基于flavor它们构建应用程序,并将它们成功添加到组织中.但是,appOne flavour当工作正常时,分发图标被隐藏appTwo flavor(如下所示):

在此输入图像描述

我也尝试了旧的方式(生成fabric.propertiesbuild)没有任何成功:链接1链接2.

有没有办法可以基于分发多个应用程序flavor

android crashlytics android-gradle-plugin twitter-fabric

7
推荐指数
1
解决办法
2231
查看次数