jne*_*der 17 testing android android-activity android-studio
在Android Studio之前,测试和Android应用程序涉及一个单独的Android项目,在构建生产时会被忽略.使用Android Studio,生产代码和测试代码存在于同一个项目中,该项目本身只有一组其他内容(清单,资产,资源).
在这种情况下,我如何定义仅用于测试的自定义Activity?对于允许启动任何Activity的Android,必须在清单中声明它.有没有办法解决这个限制?如何指示Android加载仅测试活动而不污染项目的生产方面?
Sco*_*rta 18
这是怎么做的.
1.在build.gradle中定义新的构建类型:
buildTypes {
extraActivity {
signingConfig signingConfigs.debug
debuggable true
}
}
Run Code Online (Sandbox Code Playgroud)
我已经给它调试签名配置并将其设置为可调试; 根据需要配置.
2.单击" 使用Gradle文件同步项目"按钮.
3.从Build Variants窗口中选择新的构建类型.
4.为新构建类型设置源目录
在我的示例中,我的文件将在com.example.myapplication3.appJava包中.
src/extraActivity/java/com/example/myapplication3/app
src/extraActivity/res
Run Code Online (Sandbox Code Playgroud)
5.在构建类型的文件夹中创建新活动
请注意,如果右键单击该包并选择" 新建" >" 活动",则会出现错误,并且不会将活动文件放入新构建类型的文件夹中,但会将它们放在src/main中.如果您这样做,则必须手动将文件管理器移动到正确的文件夹中.
6. 在src/extraActivity中创建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>
Run Code Online (Sandbox Code Playgroud)
在我的示例中,我将我的新活动设置为启动器活动,以便我可以在应用程序屏幕中看到它并确认它正在运行; 你可能不需要这样做.由于我给了我的应用程序两个启动器图标,我还需要遵循两个启动器活动的建议并将其添加到我的主要活动intent-filter(在src/main/AndroidManifest.xml中); 您可能不需要这样做:
<category android:name="android.intent.category.DEFAULT"/>
Run Code Online (Sandbox Code Playgroud)
完成所有这些后,这是我的项目布局的屏幕截图:

这适合我.我可以使用Build Variants窗口来回切换构建类型(您可以在上面的屏幕截图的左侧看到它的选项卡); 构建调试变量只给我一个活动,构建extraActivity变量给了我两个.
| 归档时间: |
|
| 查看次数: |
1997 次 |
| 最近记录: |