小编And*_*tel的帖子

当应用处于"待发布"阶段并由审核人/测试人员(Google Play商店)使用/审核时,InstallerPackageName是什么?

情况

我的应用程序中有一组功能,它们根据安装的商店进行更改.例如,我希望为家庭观众和儿童展示一组更受限制的广告,以便有资格获得该Google Play for Education类别.在其他商店,我仍然想限制,但不希望像过滤广告一样严格.

我最后的一般观察是,如果我选择加入"Google Play for Education"类别,则需要花费几个小时才能发布,因为以下内容(如开发者控制台所述):

选中此框会提交此应用,以便包含在Google Play for Education的"教育工作者推荐"部分中.关于推荐哪些应用程序的最终决定是由第三方教师网络完成的.如果您的应用被选中,我们将通过电子邮件通知您.如果没有,您的应用仍可在Google Play for Education中搜索.

现在,在应用程序在此类别中发布教师网络之前,我假设,下载并测试/验证是否符合指南且没有违规.

问题

为了区分我安装的商店我显然使用这个:

    PackageManager packageManager = context.getPackageManager();
    String installer = packageManager.getInstallerPackageName(packageName);

    if (installer == null) installer = ""; //to avoid NPE

    if (installer.equals("com.android.vending")) {
        //It is installed from Google Play store
        //PROBLEM: THIS DOES NOT SEEM TO BE THE PACKAGE NAME RETURNED
        //WHEN GOOGLE PLAY REVIEWERS/TESTERS ARE USING THE APP
    }
    else ... 
    ....
    ....
    //similarly handling other …
Run Code Online (Sandbox Code Playgroud)

android publishing admob android-package-managers google-play

14
推荐指数
1
解决办法
745
查看次数

使用"resValue"本地化通过build.gradle添加的字符串资源

这是对这篇文章帮助我的答案的延续

我们可以添加字符串资源,如下所示build.gradle:

productFlavors {
    main{
        resValue "string", "app_name", "InTouch Messenger"
    }

    googlePlay{
        resValue "string", "app_name", "InTouch Messenger: GPE Edition"
    }
}
Run Code Online (Sandbox Code Playgroud)

它的作用就像一个魅力,并且每个风格都有不同的app名称.(app_namestrings.xml文件中删除原始字符串资源.

但是,我们如何为这个添加的字符串资源添加本地化字符串build.gradle

我们可以通过指定区域设置的附加参数吗? 或者 可以使用gradle任务来完成它?

注意:我不能这样做strings.xml(因为我的项目结构的几种方式不可行)

android android-resources android-studio android-gradle-plugin android-productflavors

13
推荐指数
2
解决办法
6333
查看次数

Android + Gradle:设置动态archivesBaseName的最佳位置

在我们的Android项目中,我们希望APK的文件名包含日期,git分支名称和简短提交哈希等信息.

我们一直把它作为我们的一部分 defaultConfig

android {
   defaultConfig {
      setProperty("archivesBaseName", "$projectName.$branchName.$date.$buildNumber.$versionCode-$versionName-$versionSha")    
   }
}
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都有效,但是我们的构建有时会失败并指向过时的值(例如在切换分支之后).在Android Studio中强制Gradle Sync通常会修复它.

那么,是否有更好,更强大的方法来确保财产保持最新并强制进行同步?

android gradle android-studio

13
推荐指数
1
解决办法
1883
查看次数

shrinkResources设置为true,但未删除所有未使用的资源(特别是drawable)

我将shrinkResources设置为true,如下所示:

releasepro {
    minifyEnabled true
    shrinkResources true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    applicationIdSuffix ".pro"
}
Run Code Online (Sandbox Code Playgroud)

但这只是删除了一些未使用的资源.我知道gradle做了一些猜测,并留下了不确定未使用的资源.有没有办法100%删除所有未使用的资源?

我读到在另一个线程中将shrinkMode设置为strict.这会有帮助吗?我无法尝试,因为我无法确定设置它的位置.查看示例和文档,但遗憾的是无法访问正确的页面.

有没有办法确保100%删除未使用的资源?

android gradle apk shrinkresources

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

在Galaxy S5中调试应用程序

我正在使用Android Studio 1.5.1为我的公司构建一个Android应用程序.我发现该应用程序无法在某些 Galaxy S5手机上运行.

当应用运行时,这些手机只显示白屏.在使用Android版本5.1.1的Galaxy S5设备上会出现此错误,但在运行Android 5.0版本的Galaxy S5设备上则不会

我专注于Android版本作为解决此错误的线索.我实际上无法获得其中一个设备,所以我创建了几个虚拟设备.Android Studio的虚拟设备配置向导中有6个Android 5.1.1的可下载系统映像.我安装了所有这些.没有复制此白屏错误.

我还能做些什么来发现这个bug?

如果它有助于回答我的问题,我的应用很大程度上依赖于服务器通信.整个应用程序只是一个Webview有一些html&JS文件.

android android-virtual-device android-studio

11
推荐指数
1
解决办法
645
查看次数

使用"initWith"为"productFlavors"和"sourceSets"复制构造函数

参考这个答案.是否可以像链接答案中的那个一样创建productFlavorssourceSets使用复制构造函数initWith.那一个很有用buildTypes.

因为buildTypes它是这样做的:

debugfree.initWith(buildTypes.debug)
Run Code Online (Sandbox Code Playgroud)

这是可能的productFlavorssourceSets呢?

android gradle android-productflavors android-build-type android-sourcesets

11
推荐指数
0
解决办法
282
查看次数

TypedArray的getResourceId方法

我正在阅读有关getResourceId()方法的文档.它说:

检索索引处属性的资源标识符.请注意,在检索整个TypedArray对象时,属性资源已解析.因此,此函数将返回找到的最终资源值的资源标识符,而不一定是该属性指定的原始资源.

所以

  • 第一段很清楚:

检索索引处属性的资源标识符.

  • 第二个也是明确的:

请注意,在检索整个TypedArray对象时,属性资源已解析.

  • 但3段是什么意思? 为什么它可能 不一定返回原始资源ID

因此,此函数将返回找到的最终资源值的资源标识符,而不一定是该属性指定的原始资源.

android android-custom-view typedarray android-resources android-custom-attributes

9
推荐指数
2
解决办法
1745
查看次数

Google Developer Console:如何查看评论列表中的所有评分?

在Google Play开发者控制台中,我目前只能看到提交评论的用户反馈以及评分.但我看不到那些只有评级(没有评论).

我可以通过Play商店本身看到一些(通过点击应用页面中的所有评论按钮).但是那个也没有显示所有提交的评论.

那么,有没有办法查看用户提交的所有反馈?

android review user-feedback google-play

8
推荐指数
2
解决办法
5365
查看次数

错误"生成签名APK - APK已成功生成"消息弹出每次我进行构建(生成签名的apk一次后)

这对我来说正在所有项目中发生.当我从Android Studio生成签名的apk时,我收到以下正确的消息:

在此输入图像描述

问题:在此之后,当我实际上没有生成签名的apk时,我继续为项目发生的每个构建获取此消息.

我检查了目标文件夹,看看apk是否实际上已生成,但事实并非如此.那为什么我收到消息?重新启动Android Studio后,它会停止.

这是项目或设置中的错误配置还是Android Studio中的错误?我正在使用Android Studio 1.5.1

更新:我不想禁用lint和禁止该问题.实际上,我(可能是在寻找一个真正的解决configuration or settings changeIDEgradle文件)


正如我在用户2082415接受的答案中所提到的,这是Android Studio中的一个错误.我现在正在关注错误报告,并会在可用的情况下使用解决方案更新此帖子.

这是错误报告的链接

android signing gradle apk android-studio

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

Admob bannner广告没有采取全宽度

在使用Admob横幅广告时,测试和实时广告都不会占用设备的全部宽度.

这是adView我在布局xml中声明的:

<com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:gravity="bottom"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id"></com.google.android.gms.ads.AdView>
Run Code Online (Sandbox Code Playgroud)

这是呈现的内容:

在此输入图像描述

android admob android-layout

7
推荐指数
2
解决办法
4320
查看次数