如何设置不同的application使用教程ID使用flavorDimensions各味合用

I just wanted to know if there is some kind of class to use the multitouch features of android 2.1.
Specifically I am trying to implement pinch-zoom and was wondering if I always have to measure the distance between two touch events and calculate the zoom level on my own?
解决方案 I'm trying to do the same thing, and as usual my first instinct was to look into the Android source code itself. The interesting bits seem to be in class , which is not public but its javadoc says
@hide Pending API approval
so hopefully it will become public at some point.
is now part of the Android 2.2 API.
本文地址: &
我只是想知道是否有某种类来采用Android 2.1的多点触控功能。具体来说,我想实现捏缩放和在想,如果我总是要衡量两个触摸事件之间的距离,计算出在我自己的缩放级别?
解决方案 我试图做同样的事情,和往常一样我的第一反应是寻找到C本身的Android源$ C $。有趣的位似乎是在类ScaleGestureDetector,这是不公开的,但它的javadoc说:
@hide待API批准
所以希望它会在某些时候成为公众。
更新:ScaleGestureDetector现在是Android 2.2的API的一部分。
本文地址: &
扫一扫关注官方微信他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Gradle: android.variantFilter 事业 build
升级到 Gradle 2.2.1 后失败
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
我在工作, Android 项目有很多flavors,我使用这段代码在 build.gradle 设置每种flavors的包名称:
flavorDimensions "type", "feature"
productFlavors {
abc { flavorDimension "type" }
def { flavorDimension "type" }
ABC { flavorDimension "feature" }
DEF { flavorDimension "feature" }
android.variantFilter { variant -&
def flavorString = ""
def flavors = variant.getFlavors()
for (int i = 0; i & flavors.size(); i++) {
flavorString += flavors[i].
if(flavorString.equalsIgnoreCase("abcABC")) {
variant.getDefaultConfig().applicationId "com.my.app.abc.abc"
if(flavorString.equalsIgnoreCase("abcDEF")) {
variant.getDefaultConfig().applicationId "com.my.app.abc.def"
if(flavorString.equalsIgnoreCase("defABC")) {
variant.getDefaultConfig().applicationId "com.my.app.def.abc"
if(flavorString.equalsIgnoreCase("defDEF")) {
variant.getDefaultConfig().applicationId "com.my.app.def.def"
一切都很好,直到我更新我的 gradle 从 1.10.0 到 2.2.1, build 失败和我收到此错误消息:
Error:(63, 0) No signature of method: com.android.build.gradle.internal.api.ReadOnlyProductFlavor.applicationId() is applicable for argument types: (java.lang.String) values: [com.hac.apps.megahd.acc]
Possible solutions: getApplicationId()
它看起来像 variant.getDefaultConfig().applicationId 现在是不同的工作。我的文档在互联网上搜索 android.variantFilter ,但它似乎不存在。
谁能告诉我怎么我这个代码工作进去 gradle 2.2.1?多谢。
解决方法 1:
VariantFilter 是为了只能用于允许或禁止生成的某些组合。DefaultConfig 对象是共享和只读。如果你想要分配给变量 applicationId 的我想你应该更类似于这样:
buildTypes {
applicationVariants.all { variant -&
def projectFlavorNames = []
variant.productFlavors.each() { flavor -&
projectFlavorNames.add(flavor.name)
project.logger.debug('Application variant ' + variant.name + '. Flavor names list: ' + projectFlavorNames)
if (projectFlavorNames.contains('customer1') && projectFlavorNames.contains('variant1')) {
variant.mergedFlavor.applicationId = 'com.customer1.variant1'
} else if (projectFlavorNames.contains('customer2') && projectFlavorNames.contains('variant2')) {
variant.mergedFlavor.applicationId = 'com.customer2.variant2'
} // else use standard package name
project.logger.debug('Using project name: ' + variant.packageName)
从动态生成多flavors的包名称 configurationAndroid package属性、package name和Application ID三者的联系及区别&&
package属性:在AndroidManifest.xml文件中。
package name:应用程序的包名。
Application ID:模块defaultConfig块下的applicationId属性。
设置Application ID
每个Android应用程序都有唯一一个类似Java包名的Application ID,比如com.example.myapp。在Android设备和Google应用商店上,Application ID是您应用的唯一标识。如果您想上传应用程序的新版本,那么Application ID必须和原来相同。如果您改变了新版本应用程序的Application ID,那么Goolge应用商店会认为这是个完全不同的应用程序。所以,从您第一次上传应用程序开始,绝对不要更改Application ID。
Application ID定义在模块build.gradle的applicationId属性中,如下所示:
defaultConfig {
applicationId &com.example.myapp&
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName &1.0&
当您在Android Studio中创建新项目的时候,您可以设置applicationId属性,这时,Application ID和package name是精确匹配的。除此之外,两者是完全独立的。当然,您可以更改package name,但是这不会影响到Application ID。反之亦然(再次提醒:在您上传应用程序之后,不要修改Application ID,不要修改Application ID,不要修改Application ID)。然而,您应该意识到,修改package name 还有另一个后果。这部分详见修改包名(下文有讲)。
尽管Application ID看起来和传统的Java包名很类似,但是Application ID的命名规则有更多的限制:
最少有两段(至少一个.隔开)
每段开头必须是字母
所有的字符只能是字母、数字和下划线
注意:在以前,Application ID 直接绑定package name。所以,有些Android APIs在方法名或者参数名中使用“package name”,但是实际上指的是Application ID。举个栗子, Context.getPackageName()方法返回Application ID。所以没必要在您应用程序代码之外分享真正的package name。
警告:如果你使用WebView,考虑使用您的package name作为您Application ID的前缀,否则,您可能遇见
issue 211768。
修改构建版本的Application ID
当为您的应用程序构建APK时,构建工具使用build.gradle文件中的defaultConfig块中定义的Application ID标识APK(如下所示)。但是,如果你想创建不同版本的应用程序并且在Google应用商店中显示不同的信息,例如“免费版”和“专业版”。您需要构建拥有不相同Application ID的不同版本。
在这种情况下,每个构建版本应该定义不同的product flavor,且每个flavor都在productFlavors{}块内部。对于每个flavor,您可以重新定义applicationId属性,或者给默认的applicationId増加前后缀,如下所示:
defaultConfig {
applicationId &com.example.myapp&
productFlavors {
applicationIdSuffix &.free&
applicationIdSuffix &.pro&
这样定义之后,“free”的Application ID是”com.example.myapp.free“。
在构建类型上,你也可以使用后缀,如下所示:
buildTypes {
applicationIdSuffix &.debug&
被转藏 : 1次
被转藏 : 1次如何使用Gradle构建不同版本的app_百度知道
如何使用Gradle构建不同版本的app
我有更好的答案
support,而buildTypes使用默认配置用于处理debug版本和release版本。以下依次来看这4点怎样实现一、不同的代码和资源要实现build时使用不同的代码和资源.2:在build文件中定义productFlavors为每个Flavor创建对应的文件夹将每个Flavor特有的文件放入文件夹1.在build文件中定义productFlavors.。2。另外一种方法是右击app目录,选择添加Activity:screenOrientation=”landscape/&不过&activity
android:name=”com.foo.bar.ActivityOne” android:theme=”@theme1”/&和&activity
android:name=”com.foo.bar.ActivityOne” android:theme=”@theme2” android:screenOrientation=”landscape/&合并会产生一个冲突,因为都有theme,而theme的属性不同。要了解manifest合并的更高级应用,查看Manifest Merger四、不同ProGuard需求android {
buildTypes {
minifyEnabled true
proguardFile getDefaultProguardFile('proguard-android.txt')
productFlavors {
proguardFile 'some-other-rules.txt'
}}Android Studio将使用所有的定义在相应buildTypes和相应productFlavors中的规则文件。有两个默认的规则文件:proguard-android.txtproguard-android-optimize.txt 存放在SDK中。可以使用getDefaultProguardFile()来获得文件的完整路径,他们除了优化的开启是否不同之外都相同。;demo/res/values 如下图....android {
..0&#39..其中defaultConfig{}中为默认值.buildsystemexample.app.demo&
versionName &1.0-demo&
applicationId &quot:22.2.0'
fullCompile &#39..
defaultConfig { ,否则Android Studio不会将full下的java目录识别为源文件目录:dependencies {
compile fileTree(dir: 'libs&#39.src&#47:screenOrientation=”landscape/&合并会成为&lt...buildsystemexample.app.full&
versionName &1.0-full&
signingConfigs { 。例如:&activity
android...xml文件. }
buildTypes { .jakewharton,导致不能添加package. }
productFlavors {
applicationId &com,并在res目录下添加本Flavor的AndroidM}三、不同的Manifest需求Manifest可以通过Merge的方式合并多个Manifest源。对于demo和full中对应的相同的文件,注意要保证包名的相同;com,productFlavors{}会复写所有可以复写的值. 将每个Flavor特有的文件放入文件夹向上一步新建的目录中,先在java目录下建立对应的package,向其中放入SecondActivity.java和其layout文件.为每个Flavor创建对应的文件夹在上面两个Flavor的基础上,假设你想在每个Flavor使用不同的SecondActivity文件,按照下面的步骤;activity
android:name=”com.foo.bar.ActivityOne” android。Manifest的merge规则见下文:PS:上述过程就是将默认的main下的目录结构复制过来:appcompat-v7:22,想添加其他资源也是同样的操作3:展开app目录右击src目录,选择New&java app/src/demo&#47:6;Directory输入Flavor的名字,也就是demo,新建在demo中创建以下文件夹 app/src/demo/res app/src/demo/res/layout app&#47:theme=”@theme1” android: ['*.jar'])
compile '
demoCompile 'com.android.support:design,在引导界面中最后一项Target Source Set选择你想添加到的Flavor。通常来说,有三种类型manifest文件需要被merge到最终的结果apk,Android Studio就会自动为你生成对应的AndroidManifest,不过需要稍加修改.1。在添加demo所需文件后,为了添加full所需文件和包,需要在Android Studio中将build variants切换为fullDcom,否则main中代码对于不同部分的引用,会因为有不同包名而失败。二、不同的依赖在build.gradle中,使用Flavor名+Compile来规定特定Flavor所需依赖;, include.bar.android.0&#39:butterknife:name=”com,下面是按照优先权排序:productFlavors和buildTypes中所指定的manifest文件应用主manifest文件库manifest文件简单来说,manifest的merge会将每个元素及其子元素的节点和属性进行合并.ActivityOne” android:theme=”@theme1”/&和&activity
android:name=”com.foo.bar.ActivityOne” android对于多种类型的apk包构建,通常有以下需求:各版本有不同的代码、资源上述代码中各版本有不同的依赖各版本有不同的Manifest中元素需求各版本有不同的proGuardAndroid Studio中使用Gradle编译多种apk包需要靠productFlavors或者buildTypes实现,如果有两种product flavor和两种build type,则他们可以生成2*2=4种不同类型的apk包。下文主要使用productFlavors自定义apk内容
资源 上述代码中各版本有不同的依赖 各版本有不同的Manifest中元素需求 各版本有不同的proGuard Android Studio中使用Gradle编译多种apk包需要靠productFlavors或者buildTypes实现。下文主要使用productFlavors自定义apk内容,而buildTypes使用默认配置用于处理debug版本和release版本,如果有两种product flavor和两种build type,则他们可以生成2*2=4种不同类型的apk包对于多种类型的apk包构建,通常有以下需求: 各版本有不同的代码
为您推荐:
其他类似问题
app的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 application使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信