小编yaj*_*esh的帖子

resConfigs 在 android (gradle) 中如何工作?

缺乏关于 gradle 方法的适当文档resConfigs让我问这个问题。

官方文档:

  • 这个例子中,谷歌给出了如何将其与语言一起使用的具体示例。
  • 这个例子中,谷歌混合了语言和绘图
  • 我无法找到任何像 gradle doc 这样的javadoc

我的(大部分是错误的)理解:

如果我在 前面指定某些内容resConfigs,则只有该内容会包含在最终版本中,其他所有内容都不会捆绑到 apk 中。


安卓应用程序设置

测试应用程序有

  • 多种语言(values-en、values-fr、...)
  • 多个可绘制文件夹(drawable-xxhdpi、drawable-xxxhdpi,...)
  • 多个 Android 版本(values-v21、values-v7、...)
  • 多个最小宽度(sw800、sw1000、...)
  • 多个方向(港口、陆地)
  • ETC

我的测试观察

注意:我使用android studios的apk分析器推导出以下结果。在每次测试之前,都会在启用 proguard(shrink) 的情况下生成完整的清理、重建和生产版本。


测试 1: 我仅指定语言resConfigs="en", "fr"

结果1: 在apk中,

  • 除 en 和 fr 外,所有语言都消失了
  • 所有其他资源都存在(drawables、dimens、sw、orientation ...)

测试 2: 我只指定了可绘制对象resConfigs="xxhdpi"

结果2: 在apk中,

  • 所有语言都在场
  • 所有其他资源都存在(dimens、SW、方向...)
  • 除了 xxhdpi 之外,所有可绘制对象都消失了。(所有其他可绘制文件夹都存在,但有 0 字节文件)

测试 3: 我指定了语言和绘图resConfigs="en","fr","xxhdpi"

结果3: 在apk中,

  • 除 en 和 fr 外,所有语言都消失了
  • 所有其他资源都存在(dimens、SW、方向...)
  • 除了 xxhdpi …

android build gradle kotlin android-studio

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

8
推荐指数
1
解决办法
1186
查看次数

如何在API级别8+中支持searchItem.setOnActionExpandListener?

我正在使用ActionBarActivity,如何在API级别8+中支持searchItem.setOnActionExpandListener?它表示最低API级别14是必需的.

下面是我的代码,目前我正在抑制错误并仅在API> = 14时允许代码执行.

@SuppressLint("NewApi")
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.action_bar_home_screen, menu);
    searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat
                .getActionView(searchItem);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            searchItem.setOnActionExpandListener(new OnActionExpandListener() {

                @Override
                public boolean onMenuItemActionExpand(MenuItem item) {
                    hideProgressBar();
                    return true;
                }

                @Override
                public boolean onMenuItemActionCollapse(MenuItem item) {
                    showProgressBar();
                    selectItem(lastSelectedItemPosition);
                    return true;
                }
            });
        }
}
Run Code Online (Sandbox Code Playgroud)

android searchview android-support-library android-actionbar-compat android-actionbaractivity

4
推荐指数
1
解决办法
3924
查看次数