使用非生产活动进行Android Studiotesting

在Android Studio之前,testing和Android应用程序涉及一个单独的Android项目,在构build生产时将被忽略。 使用Android Studio,生产代码和testing代码存在于同一个项目中,它本身只有一套其他任何东西(清单,资产,资源)。

在这种情况下,我将如何定义仅用于testing的自定义活动? 对于Android允许任何Activity启动,它必须在清单中声明。 有没有办法解决这个限制? 如何指示Android如何加载纯testing活动而不污染项目的生产方面?

Solutions Collecting From Web of "使用非生产活动进行Android Studiotesting"

以下是如何做到这一点。

1.在build.gradle中定义一个新的构buildtypes

buildTypes { extraActivity { signingConfig signingConfigs.debug debuggable true } } 

在我的我已经给它的debugging签名configuration,并将其设置为可debugging; 根据你的看法进行configuration。

2.点击同步项目与Gradle文件button。

3.从“ 构build变体”窗口中select新的构buildtypes。

4.为新的构buildtypes设置源代码目录

在我的例子中,我的文件进入com.example.myapplication3.app Java包。

 src/extraActivity/java/com/example/myapplication3/app src/extraActivity/res 

5.在您的构buildtypes的文件夹中创build新的活动

请注意,如果右键单击包,然后selectNew > Activity ,就会出现一个错误,它不会将活动的文件放入新的构buildtypes的文件夹中,而是将它们放在src / main中。 如果你这样做,你必须手动将文件pipe理器移动到正确的文件夹。

6.在src / extraActivity中创build一个AndroidManifest.xml文件

这个清单与src / main中的版本合并 ,所以只需要在原始文件的顶部添加你需要覆盖的位:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication3.app" > <application> <activity android:name=".ExtraActivity" android:label="Extra Activity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

在我的示例中,我已经将我的新活动设置为启动器活动,以便我可以在“应用程序”屏幕中看到它并确认它正在工作; 你可能不需要那样做。 由于我给我的应用程序两个启动器图标,我还需要遵循两个启动器活动的build议,并将其添加到我的主要活动的intent-filter (在src / main / AndroidManifest.xml中 )。 你可能不需要这样做:

 <category android:name="android.intent.category.DEFAULT"/> 

完成这些工作后,我的项目布局截图如下:

显示项目结构的屏幕截图

这对我有用。 我可以使用Build Variants构build变体)窗口来切换构buildtypes(您可以在上面的屏幕截图的左侧看到它的标签)。 构builddebugging版本只给了我一个活动,构buildextraActivity变体给了我两个。