我有一个Android Gradle项目,我想创建两个风味分支.我使用具有以下结构的默认sourceSets:
src
- main
- java
- package
- res
- manifest.xml
- flavor1
- java
- package
- flavor2
- java
- package
Run Code Online (Sandbox Code Playgroud)
"main/java","flavor1/java"在IDE中呈现/注释为Java源代码(即"java"为蓝色,目录显示为包),但"flavor2"的呈现方式不同.
我试图清除缓存并重新启动Android Studio,但这没有帮助.我怎样才能解决这个问题?
当我尝试上传新的flavor版本时,我收到一个错误:
警告 - Crashlytics在上传发行版时遇到问题.项目开发人员无效
如何修复它并flavor为测试添加新内容?
是否存在用于从json模型生成kotlin数据类的服务,以及它在http://www.jsonschema2pojo.org/站点上的工作方式?我的新项目有过多复杂的API响应,所以它可以节省我的时间.
今天更新android studio后我的源文件夹在项目标记如下("J"里面有一个红色圆圈标记).我该如何解决?我尝试了清除缓存,重新导入项目,使用gradlew clean build,但它没有帮助.

的build.gradle
apply plugin: 'android'
apply plugin: 'android-apt'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
lintOptions {
abortOnError false
}
}
def AAVersion = '3.0.1'
dependencies {
......
}
apt { …Run Code Online (Sandbox Code Playgroud) 我加了
apply plugin: 'com.google.firebase.firebase-perf'
Run Code Online (Sandbox Code Playgroud)
当我运行build脚本时,我得到了
/transforms/FirebasePerformancePlugin/dev/debug/174/module-info.class:D8:不支持的源文件类型
这可能是什么问题?
我更新了所有插件,播放服务和Android Studio,但没有运气
一个小小的新手问题.我们为什么要初始化ViewHolder的getView()?为什么我们不能在构造函数中初始化它?
我有GCM示例android gradle项目.它运行良好,当我添加2种口味时,推送通知停止工作.我的编译清单(取自app\build\intermediates\manifests\ex\debug)文件如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.flavor.app"
<uses-permission android:name="com.flavor.app.permission.C2D_MESSAGE" />
<permission
android:name="com.flavor.app.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.flavor.app" />
</intent-filter>
</receiver>
<service android:name="com.ex.app.GCMIntentService" />
<service
android:name="com.ex.app.AppLocationService"
class=".AppLocationService" >
<intent-filter>
<action
android:name=".AppLocationService"
android:value=".AppLocationService" />
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个问题?请帮忙.
UPD1.我正在使用gradle v.0.12 +.我认为我的最终清单文件看起来不错,GCMRegistrar.checkManifest(this); - 没有错误,但GCMRegistrar.isRegistered(this)总是假的.=(
UPD2.我的第一个带有原始包名称的flavor项目(作为main分支中的项目)运行良好,但是更改包的第二个风格不起作用(pushId仍然是空的),但是在清单文件中,所有的permitions都是正确的.
java android gradle google-cloud-messaging android-productflavors
我试图用'espresso'编写简单的测试
@RunWith(AndroidJUnit4.class)
@LargeTest
public class EspressoTest {
@Rule
public ActivityRule<IntroActivity> mActivityRule = new ActivityRule(IntroActivity.class);
public EspressoTest() {
IdlingPolicies.setMasterPolicyTimeout(1000, TimeUnit.SECONDS);
}
@Test
public void testShouldClickEmailButton() {
onView(withText(R.string.in_email)).perform(click());
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误:
PerformException: Error performing 'single click' on view 'with string from resource id: <2131099761>[in.email] value: Login With Email'.
Run Code Online (Sandbox Code Playgroud)
我正在尝试不同的测试框架,robotium目前为止对我来说是最好的,但是如果有人可以解决此错误,我将不胜感激
UPD更详细的日志
由以下原因引起:java.lang.RuntimeException:由于目标视图与以下一个或多个约束不匹配,因此不会执行操作:向用户显示视图区域的至少90%。目标视图:“ DSeparatedButton {id = 2131427459,res-name = button_login,可见性= VISIBLE,宽度= 622,高度= 120,has-focus = false,has-focusable = true,has-window-focus = true,is- clickable = true,is-enabled = true,is-focused = false,is-focusable = true,is-layout-requested = false,is-selected = false,root-is-layout-requested …
我有一个基本模块,我想创建一个包含一些库的功能。其中一个库位于基础模块中,当我将其移至该功能并将其从基础模块中删除时,出现错误:
APT:错误:找不到资源样式/SDKTheme.Translucent(又名io.app.dev.debug:style/SDKTheme.Translucent)。
如果基础和功能模块具有这种依赖性,它就可以工作,但在这种情况下,我失去了分离的好处。
我发现了一个已知问题:
在动态功能模块的清单中,您不应引用基本模块中不存在的资源。这是因为,当 Google Play 生成您应用的基础 APK 时,它会将所有模块的清单合并到基础 APK 的清单中。因此,如果基础 APK 的清单引用了基础 APK 中不存在的资源,则资源链接会中断。
这是我的问题吗?
当我可以简单地使用时,为什么我应该使用Communicating with Other Fragments模式
((MyActivity)getActivity()).doFoo();
在我的Fragment?
我想为每种构建类型和风格解析manifestPlaceholders依赖项.例如,我有
productFlavors {
dev {
manifestPlaceholders = ['applicationLabel': 'DevFlavor']
}
prod {
manifestPlaceholders = ['applicationLabel': 'ProdFlavor']
}
.....
buildTypes {
debug {
def old_name = manifestPlaceholders.get('applicationLabel'); // every time is null
// def old_name = productFlavors.dev.manifestPlaceholders.get('applicationLabel'); // ITS OK, but not dynamic
manifestPlaceholders = [applicationLabel: old_name + ' Dev']
}
Run Code Online (Sandbox Code Playgroud)
是否有任何解决方案可以添加'Dev'后缀来调试产品口味?
谢谢你的帮助
今天,我在应用程序中发现了奇怪的行为。我有一个样式如下的视图(实际上是TextView):
> <style name="EditTextStyle.Default"
> parent="Base.V12.Widget.AppCompat.EditText">
> <item name="android:textSize">@dimen/TEXT_SMALL_SIZE</item>
> <item name="android:padding">@dimen/edit_text_default_padding</item>
> <item name="android:layout_margin">@dimen/edit_text_default_padding</item>
> <item name="android:textColor">@color/text.total.color</item>
> <item name="android:background">@null</item>
> <item name="android:focusable">true</item>
> <item name="android:clickable">true</item>
> <item name="android:focusableInTouchMode">true</item> </style>
Run Code Online (Sandbox Code Playgroud)
我需要处理onClick()动作,只有在onCreate()之后第一次单击此视图时,才会出现问题,在其他情况下,所有工作都按预期进行。android跳过了第一次单击,另外选择器也运行良好并且突出显示了视图,但是onClick()方法跳过了第一次单击。
我已经解决了这个问题,没有实现这种风格,但是也许有人可以向我解释为什么或者哪个设置使我的应用程序崩溃了?