为什么Android Studio 3.0.0仅在APK上设置标志测试?
我已经通过3.0.0-rcX(来自金丝雀频道)到达了Android Studio 3.0.0(来自稳定频道) 当我启动一个全新的应用程序并构建它时,下面的代码(在应用程序内部)显示设置了FLAG_TEST_ONLY标志为什么Android Studio 3.0.0仅在APK上设置标志测试?,android,android-studio,apk,flags,android-studio-3.0,Android,Android Studio,Apk,Flags,Android Studio 3.0,我已经通过3.0.0-rcX(来自金丝雀频道)到达了Android Studio 3.0.0(来自稳定频道) 当我启动一个全新的应用程序并构建它时,下面的代码(在应用程序内部)显示设置了FLAG_TEST_ONLY标志 Log.e(TAG, "ApplicationInfo: " + (getApplicationInfo().flags & ApplicationInfo.FLAG_TEST_ONLY)); 10-31 09:54:05.226 16129-16129/com.exa
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>
为什么要设置此标志,以及如何阻止设置此标志?前几天我突然遇到了此问题。根据我的测试,只有在从Android Studio运行应用程序时,才会添加此标志。不幸的是,APK文件名没有提示问题。而且,尽管有文档,这个APK只能从Android Studio中使用-我特别尝试通过adb
安装它,它应该可以工作,但没有
如果以其他方式构建APK,则不应添加该标志。具体来说,我使用了assembleerelease
Gradle任务。我希望androidstudio中的“buildapk(s)”菜单选项也能正常工作
考虑到Android Studio在直接运行构建和其他构建中可能会出现的即时运行和其他潜在的恶作剧,我对他们添加这个标志并不感到惊讶。就我个人而言,我希望有一个更明确的选择,可以选择退出所有此类恶作剧(也许还有这面旗帜),因为我是那些希望我从IDE运行的应用程序与我的用户运行的应用程序相同的怪人之一
FWIW,我有更多关于这方面的背景。AFAIK,只有当应用程序从Android Studio运行时,才会设置此标志。通过其他方式(例如,assembleRelease
Gradle任务)构建的APK没有此标志。因此,除了从Android Studio运行应用程序并获取生成的APK之外,还可以为更新创建APK。@Commonwarerm app/build/outputs/APK/debug/app debug.APK
和/gradlew assembleDebug
完成了这项任务。回答这个问题,我会接受的。用adb Install-t file.apk安装应用程序