2016-09-02 23 views
0

我使用当前应用程序版本和风味名称撰写.apk文件名。我想添加当前的ABI拆分名称,但前提是它是通用的apk。如何在Gradle输出中获取ABI名称迭代器

我的相关build.gradle部分:

buildTypes { 
    release { 
     applicationVariants.all { variant -> 
      variant.outputs.each { output -> 
       def flavor = .... // some code to parse flavor & determine an appropriate string from it 
       output.outputFile = new File(output.outputFile.parent, "app_" + flavor + "_0" + variant.versionCode + ".apk") 
      } 
     } 
    } 
} 
productFlavors { 
    deploy { 
     splits { 
      abi { 
       enable true 
       reset() 
       include 'armeabi-v7a' //select ABIs to build APKs for 
       universalApk true //generate an additional APK that contains all the ABIs 
      } 
     } 
    } 
} 

目前这款配置生成两个.apks,但它们都具有相同的文件名,因为我不知道怎么去ABI的名字,所以一个后产生覆盖之前生成的那个。

那么,目前ABI拆分的等效variant.productFlavors.get(0)是什么?

回答

4

这是风味和ABI-名字很奇怪的自动添加到建立名称(如果你作出相应组装)

你能尝试完全删除您定制的命名

applicationVariants.all { variant -> 
      variant.outputs.each { output -> 
       def flavor = .... // some code to parse flavor & determine an appropriate string from it 
       output.outputFile = new File(output.outputFile.parent, "app_" + flavor + "_0" + variant.versionCode + ".apk") 
      } 
     } 

,取而代之的是尝试添加到defaultConfig此行

archivesBaseName = "app_${versionCode}" 

如果这不会解决你的问题,你可以尝试从输出

0123得到ABI ​​
+0

谢谢,getFilter thingy很好地工作:) – velis

+1

> output.getFilter(com.android.build.OutputFile.ABI)<它适用于我,thanx! –