代码之家  ›  专栏  ›  技术社区  ›  fadedbee

为什么Android Studio 3.0.0只在APK上设置FLAG\u TEST\u?

  •  3
  • fadedbee  · 技术社区  · 8 年前

    我已经通过3.0.0-rcX(来自金丝雀频道)到达了Android Studio 3.0.0(来自稳定频道)。

    当我启动一个全新的应用程序并构建它时,以下代码(应用程序内部)显示设置了FLAG\u TEST\u ONLY标志。

    Log.e(TAG, "ApplicationInfo: " + (getApplicationInfo().flags & ApplicationInfo.FLAG_TEST_ONLY));
    
    10-31 09:54:05.226 16129-16129/com.example.dummy E/MainActivity: ApplicationInfo: 256
    

    应用程序的清单是:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.dummy">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>
    

    该标志阻止设备策略控制器安装它: Upgrading app in background using Device Policy Controller

    1 回复  |  直到 8 年前
        1
  •  7
  •   CommonsWare    8 年前

    前几天我突然遇到了这件事。根据我的测试,只有从Android Studio运行应用程序时,才会添加此标志。不幸的是,APK文件名没有提示问题。而且,尽管有文档,该APK是 可从Android Studio使用-我特别尝试通过 adb ,这应该有效,但没有。

    assembleRelease

    考虑到即时运行和其他可能的恶作剧,Android Studio可能会在直接运行构建中与其他构建进行比较,我并不惊讶他们添加了这个标志。就我个人而言,我希望有一个更明确的选择,即退出所有此类恶作剧(可能还有这个标志),因为我是那些希望我在IDE上运行的应用程序与我的用户运行的应用程序相同的怪人之一。

    FWIW,我在这里有更多的背景 this blog post .