我的应用程序似乎已准备好对我的设备上的应用程序内购买程序进行"真实生活"测试.但是,我在Play商店收到"发布商无法购买此商品"错误消息.现在,我该怎么测试呢?我不想丢失手机的配置,只需重新安装一个虚拟帐户进行测试.在"设置" - "许可证测试"下的开发者控制台中,我在"具有测试访问权限的GMail帐户"下添加了我的电子邮件地址,但这并没有改变任何内容......也许我错过了一些简单的方法,但现在它感觉很混乱!
将Android Studio升级到版本0.4.0后,我遇到了一个新错误:
我通过gradle-wrapper.properties升级到gradle 1.9
distributionUrl=http\://services.gradle.org/distributions/gradle-1.9-all.zip
Run Code Online (Sandbox Code Playgroud)
并在build.gradle中升级了gradle版本
dependencies {
classpath 'com.android.tools.build:gradle:0.7.+'
}
Run Code Online (Sandbox Code Playgroud)
现在我的项目正在重建.
我为不同的productFlavors定义了一些String常量:
productFlavors {
local {
buildConfig "public static final String MY_KEY = \"\";"
}
alpha {
buildConfig "public static final String MY_KEY = \"XXXXX-XXXXX-XXX\";"
}
beta {
buildConfig "public static final String MY_KEY = \"YYYYY-YYYYY-YYY\";"
}
}
Run Code Online (Sandbox Code Playgroud)
这是新的错误
找不到参数的方法buildConfig() [public static final String MY_KEY ="";] on GroupableProductFlavorDsl_Decorated {name = local,minSdkVersion = -1,targetSdkVersion = -1,renderscriptTargetApi = -1,renderscriptSupportMode = null,renderscriptNdkMode = null, versionCode = -1,versionName = null,packageName = null,testPackageName = …
android gradle android-studio build.gradle android-gradle-plugin
谷歌发布了Android Gradle插件的0.11版本.
发行说明包含以下内容:
0.11中用户可见的更改之一是我们已经弃用了packageName和packageNameSuffix设置,并将它们重命名为applicationId和applicationIdSuffix.这样做的目的是清楚地表明这个应用程序id与清单中的包声明分离,特别是R类和BuildConfig类,以及应用程序中的所有实现类,可以自由地重命名和重构; 你只需要保持applicationId相同.如果打开build.gradle文件,lint会突出显示这些已弃用的调用并提供快速修正来更新它们:
这到底是什么意思.如何将构建脚本中的packagename与清单中的packagename分离?
我有app应该有两种口味:免费和付费.两个版本分别完美运行.但是当我想立刻安装其中的两个时,我收到错误:[INSTALL_FAILED_CONFLICTING_PROVIDER].我试图改变android:authorities和buildConfigField值完全不同但它不会改变任何东西 - 应用程序将无法安装.我还删除了主Android Manifest中的提供者声明 - 没有.请帮我.
我的文件夹结构:
src
|- free
| |- AndroidManifest.xml
|- main
| |- all files and res catalogues (java, res, values etc.)
| |- AndroidManifest.xml
|- premium
|- AndroidManifest.cml
Run Code Online (Sandbox Code Playgroud)
我的gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
final PROVIDER_FREE = "com.example.free.contentprovider"
final PROVIDER_PRO = "com.example.pro.contentprovider"
defaultConfig {
minSdkVersion 14
targetSdkVersion 20
}
buildTypes {
release {
minifyEnabled false // new version
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
free {
applicationId "com.example.free"
versionCode 141201004 …Run Code Online (Sandbox Code Playgroud) java android gradle android-contentprovider android-productflavors
我为我的Android应用程序定义了一些flavor和buildTypes
productFlavors {
X {
applicationId = "com.x.xxxx"
}
Y {
applicationId = "com.y.yyyy"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard_rules.txt'
}
debug {
applicationIdSuffix ".debug"
}
}
Run Code Online (Sandbox Code Playgroud)
这样做可以创建不同的flavor/buildType组合.
现在为了确保ContentProviders工作而我没有收到Failure [INSTALL_FAILED_CONFLICTING_PROVIDER]错误,我已将代码中的android:authorities="${applicationId}"和AUTHORITY引用更改为BuildConfig.APPLICATION_ID.
这使得ContentProvider工作正常,即当我在同一部手机上安装两种不同类型时,它不会引发错误.它让我安装它们.
下一步是错误发生的地方.我使用SyncAdapter并AccountManager控制一些事情.我已修改ACCOUNT_TYPE使用了APPLICATION_ID.因为不能够使用gradle这个问题的${applicationId}非清单XML资源文件,我已经创造了每味不同的目录结构和复制syncadapter.xml,并authenticator.xml有相应的authority和account type字符串.
我也尝试过这个博客中描述的技术 - http://blog.jensdriller.com/android-gradle-workaround-for-missing-placeholder-support-in-resource-files/
最受欢迎的答案是在Gradle中使用构建类型来运行在一台设备上使用ContentProvider的相同应用程序但事情似乎不起作用.
有人能够最近上班吗?
xml android gradle android-syncadapter android-productflavors
我使用 Google Play Developer Console 创建了两个单独的应用程序:
com.myname.app(用于prod风味)com.myname.appStage(用于stage风味)我在 gradle 中使用com.github.triplet.play任务将这些风格部署到相应的 beta 频道。
当我尝试在同一台设备上安装这两种口味时,Google Play 给了我error: -505. 如果我卸载第一个安装的版本,那么我可以成功安装第二个。
任何想法有什么问题?
这是我的 gradle 脚本片段:
def getGoogleApiJsonFile() {
(...)
}
android {
(...)
defaultConfig {
applicationId "com.myname"
(...)
}
buildTypes {
release {
(...)
signingConfig signingConfigs.release
}
}
productFlavors {
prod {
applicationIdSuffix '.app'
}
stage {
applicationIdSuffix '.appStage'
}
dev …Run Code Online (Sandbox Code Playgroud) 我有两个同一个主人的分支
version1
version2
Run Code Online (Sandbox Code Playgroud)
我希望能够同时在手机上安装同一个应用程序的两个版本,而不会相互覆盖.
可能吗?
谢谢
我正在开发一个 Android 应用程序,现在应该在为生产应用程序提供服务的同一环境中测试新功能。
我尝试创建一个新分支并将其重命名为 .testing 在清单和 gradle 文件中,但我对提供者有问题,特别说明:
I/dalvikvm: Could not find method android.app.Fragment.setSharedElementEnterTransition, referenced from method com.corp.app.AccountFrag.access$super
Run Code Online (Sandbox Code Playgroud)
所以我不认为这是方法。我希望应用程序安装在它的两个变体中(它们不一定需要共享数据)并且用户打开一个或另一个取决于是否需要在生产环境中测试新功能或更可靠、稳定的版本需要运行。
有没有人处理过这个问题?我怀疑我需要研究口味,但我不知道。
提前感谢您的洞察力。