小编owe*_*owe的帖子

resValue gradle error:"generated.xml"中不支持的类型"String"

几个星期前,我发布了一个问题如何根据buildType覆盖资源.就在昨天,有一个用于androidgradle插件版本.根据这篇关于G +的帖子,我决定写下这个问题.

我详细描述的问题:

我想根据它创建一些资源值buildType,但这不能正常工作:只有在命令行上完成构建时才会创建文件"generated.xml":

gradlew build
Run Code Online (Sandbox Code Playgroud)

但是我通过在comannd线上构建完整的项目也会出错:

* What went wrong: Execution failed for task ':app:merge<buildVariant>Resources'.
Unsupported type 'String' in file C:\Users\...\build\res\generated\release\values\generated.xml
Run Code Online (Sandbox Code Playgroud)

每个其他构建试用版都不会创建此文件.我试过以下:

  • 在IDE上:
    • 重建项目
    • 执行外部任务"assembleBuildVariant"
  • 超过命令行:
    • gradlew assembleBuildVariant

奇怪的gradle控制台输出:

:app:generateBuildVariantResValues UP-TO-DATE
Run Code Online (Sandbox Code Playgroud)

我的build.gradle:

buildTypes {
    debug{
        buildConfigField "String", "FOO", "\"FOO DEBUG\""
        resValue "String", "RES FOO", "RES FOO DEBUG"
    }
    release {
        buildConfigField "String", "FOO", "\"FOO RELEASE\""
        resValue "String", "RES FOO", "RES FOO RELEASE"
    }
}
Run Code Online (Sandbox Code Playgroud)

我的"generated.xml":

<!-- Automatically generated file. …
Run Code Online (Sandbox Code Playgroud)

android android-studio build.gradle android-gradle-plugin

36
推荐指数
1
解决办法
3万
查看次数

如何在android studio中移动和重命名项目?

这应该是一个非常简单的问题:)

我有一个工作正常的项目.现在我想重命名它并更改项目文件夹的路径.首先看起来很简单:右击 - >"移动"和"重构/重命名".

移动并重命名我的项目文件夹和我的apk模块后,没有像以前那样的项目结构.我的项目库已被包含两次.我查看了'.iml'文件,发现前面的路径已经包含了 - 所以我改变了这个.在此之后,我可以通过命令行编译我的项目,但不能使用IDE.我有这个错误:

NullPointerException: no project directory specified
Run Code Online (Sandbox Code Playgroud)

什么是移动和重命名项目的默认方式?我通过制作一个新项目并复制所有文件解决了我的问题,但知道这个"问题"的解决方案会很酷.

编辑:

原产地项目结构:

MyProject
--- libraries
--- MyApp
Run Code Online (Sandbox Code Playgroud)

搬家后:

MyProject
--- MyProject (new path)
--- MyProject (old path)
Run Code Online (Sandbox Code Playgroud)

我想我必须做的不仅仅是复制项目.不知怎的,我必须指定"新"项目,不是吗?

android intellij-idea android-studio

29
推荐指数
5
解决办法
5万
查看次数

如何在android studio中用gradle替换buildvariant的字符串?

我的项目有两种:

flavor1 -> packagename: com.example.flavor1 
flavor2 -> packagename: com.example.flavor2
Run Code Online (Sandbox Code Playgroud)

现在我想构建一个flavor1和flavor2的构造变量.buildvariant的唯一区别是另一个packagename.

我的项目使用MapFragments并且只有一个Manifest - 所以我将MAPS_RECEIVE的权限名称放在我各自风格的字符串资源文件中.

问题是:如何替换buildvariant的字符串资源?

我尝试了以下方法(在这篇文章中描述):

buildTypes{
    flavor1Rev{
        packageName 'com.example.rev.flavor1'
        filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: ['package_permission' : 'com.example.rev.flavor1.permission.MAPS_RECEIVE'])
    }
}
Run Code Online (Sandbox Code Playgroud)

但是使用这个我得到了这个错误:

找不到参数[{tokens = {package_permission = com.example.rev.flavor1.permission.MAPS_RECEIVE}}的方法filter(),BuildTypeDsl_D ecorated {name = ReplaceTokens,debuggable = false,jniDebugBuild = false,renderscript DebugBuild = false, BuildTypeD上的renderscriptOptimLevel = 3,packageNameSuffix = null,versionNameS uffix = null,runProguard = false,zipAlign = true,signingConfig = null}] sl_Decorated {name = buderusFinal,debuggable = false,jniDebugBuild = false,renderscr iptDebugBuild = false,renderscriptOptimLevel = 3 ,packageNameSuffix = null,versionNa meSuffix = null,runProguard = false,zipAlign …

android gradle android-studio build.gradle

25
推荐指数
2
解决办法
3万
查看次数

如何查看项目中使用的Gradle Android插件版本?

在我的build.gradle文件中,我设置了以下依赖项:

dependencies {
    classpath 'com.android.tools.build:gradle:0.5.+'
} 
Run Code Online (Sandbox Code Playgroud)

这将自动适应最新发布的版本(像它的描述在这里).

如何查看我的项目中使用的当前版本?

编辑2013-08-08:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
Run Code Online (Sandbox Code Playgroud)

android gradle build.gradle

23
推荐指数
3
解决办法
2万
查看次数

根据buildType使用gradle覆盖资源

我想用gradle覆盖res/strings.xml中的一些字符串.

我知道,因为Android Gradle Plugin 0.7.+ theres可能有一个变种特定的源文件夹.但我的应用程序有很多口味,我不想添加额外的变体特定文件夹.

更新2014-01-17

我想要的详细信息:

我的资源中有一些变量只依赖于buildType(例如"release").首先,我认为我的SOLUTION_1(在资源合并后覆盖数据)很好,因为如果我必须更改这些变量,我只需要在build.config(只有一个地方)中更改它们.但正如Scott Barta在下面的评论中所写的那样,为什么这个解决方案不是一个好主意有一些很好的理由.

所以我尝试了另一个解决方案SOLUTION_2(只是合并正确的资源)基于shakalaca的这个GitHub项目.我认为这种方式更优雅,我仍然有一个优势就是在一个地方改变变量!

SOLUTION_1(在资源合并后覆盖数据):

我在AS 0.4.2中做了什么:

  • build.gradle我尝试将字符串"Hello World"覆盖为"OVERRIDE"(根据我在这篇文章中的回答):

    android.applicationVariants.all{ variant ->
        // override data in resource after merge task
        variant.processResources.doLast {
            overrideDataInResources(variant)
        }
    }
    
    def overrideDataInResources(buildVariant){
        copy {
            // *** SET COPY PATHS ***
            try {
                from("${buildDir}/res/all/${buildVariant.dirName}") {
                    // println "... FROM: ${buildDir}/res/all/${buildVariant.dirName}"
                    include "values/values.xml"
                }
            } catch (e) {
                println "... EXCEPTION: " + e
            }
    
            into("${buildDir}/res/all/${buildVariant.dirName}/values")
            // …
    Run Code Online (Sandbox Code Playgroud)

android gradle android-studio build.gradle android-gradle-plugin

23
推荐指数
2
解决办法
2万
查看次数

build.gradle和项目库

我在android studio中有一个使用项目库的项目.我的问题是gradle文件的配置.

我真的尝试了很多在这里发布的解决方案(在模块中定义modul作为modul,sherlock示例,设置正确的源集 ......)但是我总是得到相同的错误(只要我添加lib debendency就可以了我的应用build.gradle文件):

A problem occurred configuring project ':MyApp'.
> Failed to notify project evaluation listener.
   > Configuration with name 'default' not found.
Run Code Online (Sandbox Code Playgroud)

我已经从命令行进行了清理和构建,但这没有任何效果.是否有可能这只是Android Studio早期版本中的一个错误(如本文中的评论)?或者我会错过什么?

我目前的Android Studio版本:0.1.6和我的操作系统:Windows 7,64位

请帮助我,我是新手,我以前从未使用过maven或ant.

编辑1:

gardelw compileDebug --stacktrace

* Exception is:

org.gradle.api.ProjectConfigurationException: A problem occurred configuring pro
ject ':MyApp'.
        at org.gradle.configuration.LifecycleProjectEvaluator.addConfigurationFa
ilure(LifecycleProjectEvaluator.java:79)
        at org.gradle.configuration.LifecycleProjectEvaluator.notifyAfterEvaluat
e(LifecycleProjectEvaluator.java:74)
        at org.gradle.configuration.LifecycleProjectEvaluator.evaluate(Lifecycle
ProjectEvaluator.java:61)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj
ect.java:465)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj
ect.java:76)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuil
dConfigurer.java:31)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(Default
GradleLauncher.java:142)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradle
Launcher.java:113)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLaun
cher.java:81) …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio build.gradle

13
推荐指数
1
解决办法
5万
查看次数

线程启动不会调用run

我对一个奇怪的问题感到困惑.基本上情况是这样的.我在我的类中实现了runnable,我在一个新线程中传递了类,我run()在实现runnable的类中覆盖了我的方法然后我启动了线程.但是,我的start()方法从不调用我的run()方法.我搜索论坛但我似乎无法找到另一个类似的问题.

以下是我的示例代码:

public class EmailManager implements Runnable {
    PortalManagementSBLocal pmbr= this.lookupPortalManagementSB();
    Thread runner;
    String emailServerName = "";
    String smtpPort = "";
    String emailTo = "";
    String emailFrom = "";
    String mailer = "JavaMailer";
    String subject = "";
    String message = "";

    public EmailManager() {
    }//default constructor

    public EmailManager(String emailTo, String subject, String message){

        this.emailTo=emailTo;
        this.subject = subject;
        this.message = message;
        //need to make this dynamic
        this.emailFrom = pmbr.getEmailFrom();
        this.emailServerName = pmbr.getEmailServerName();
        this.smtpPort = pmbr.getEmailSMTPPort(); …
Run Code Online (Sandbox Code Playgroud)

java multithreading

11
推荐指数
1
解决办法
2万
查看次数

在AndroidManifest.xml中替换构建变量的字符串不适用于Gradle Android插件版本> 0.5.4

就在几周前,我遇到了以下问题:如何用gradle替换构造变量的字符串?

我也自己回答了这个问题.

到目前为止一切正常:我刚刚意识到我的复制任务不再起作用了.我花了几个小时来解决这个问题,直到我意识到这取决于Gradle Android插件版本:直到0.5.4的一切正常.对于较高版本,我不会进入我的复制任务.

这是控制台输出:

// gradle android plugin version: 0.5.6 and 0.5.5 --> copy tas doesn't work
:etscanner:prepareFlavor1Flavor1ReviewDependencies
:etscanner:compileFlavor1Flavor1ReviewAidl
:etscanner:generateFlavor1Flavor1ReviewBuildConfig
:etscanner:mergeFlavor1Flavor1ReviewAssets
:etscanner:compileFlavor1Flavor1ReviewRenderscript
:etscanner:mergeFlavor1Flavor1ReviewResources
:etscanner:processFlavor1Flavor1ReviewManifest
:etscanner:processFlavor1Flavor1ReviewResources
:etscanner:compileFlavor1Flavor1ReviewNote: Some input files use or override a d
eprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: <path>.DetailAdapter
.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

:etscanner:dexFlavor1Flavor1Review
:etscanner:processFlavor1Flavor1ReviewJavaRes UP-TO-DATE
:etscanner:validateFlavor1Flavor1Signing
:etscanner:packageFlavor1Flavor1Review
:etscanner:zipalignFlavor1Flavor1Review

// gradle android plugin version: 0.5.4 --> copy task work
:etscanner:prepareFlavor1Flavor1ReviewDependencies
:etscanner:compileFlavor1Flavor1ReviewAidl
:etscanner:generateFlavor1Flavor1ReviewBuildConfig
:etscanner:mergeFlavor1Flavor1ReviewAssets
:etscanner:compileFlavor1Flavor1ReviewRenderscript
:etscanner:mergeFlavor1Flavor1ReviewResources …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio build.gradle

10
推荐指数
1
解决办法
6101
查看次数

如果应用允许,发送HTML邮件

我想从我的应用程序发送一封html邮件.我知道并非所有邮件客户端都允许使用html标签.但我在API中找到了常量的Intent.EXTRA_HTML_TEXT(http://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT).

我的代码看起来像这样,但它始终只显示文本而不是html格式的文本,无论我使用的邮件客户端是什么:

 Intent intent = new Intent(Intent.ACTION_SEND);
 intent.putExtra(Intent.EXTRA_SUBJECT, subject);
 intent.putExtra(Intent.EXTRA_TEXT, "Hello World");
 intent.putExtra(Intent.EXTRA_HTML_TEXT, "<html><body><h1>Hello World</h1></body><html>");

 intent.setType("text/html"); // intent.setType("plain/text");

 startActivity(Intent.createChooser(intent,  "Choose Email Client:"));
Run Code Online (Sandbox Code Playgroud)

那错误在哪里?

email android sendmail html-email

9
推荐指数
1
解决办法
4252
查看次数

更新后,APK支持的设备比以前少

我有一个相对简单的应用程序,已经在谷歌的Play商店.

现在我已经更新了这个应用程序.此更新的一点是我包含了ZBar-Scanner.其余的变化很小,不应该对我的问题产生任何影响.

我只是将我应用程序的最新版本放在Play-Store中,然后收到以下警告:"警告:活动APK支持的设备数量少于以前活动的APK.有些用户不会收到更新."

我从sourceforge.net(http://sourceforge.net/projects/zbar/files/AndroidSDK/)下载了ZBarAndroidSDK-0.2.zip并将其导入我的项目,如README-File中所述.

我在我的HTC Wildfire S( - >版本2.3.5),三星Galaxy 3(GT-I5800 - >版本2.2)和我的Galaxy Nexus( - >版本4.2)上测试了我的本地应用程序.从来没有一个问题.一切正常.我还测试了导出的APK并没有问题.

现在我将此APK添加到Play-Store并更新我的应用程序,我收到测试设备的警告.我的HTC Wildfire和我的三星Galaxy 3都无法更新新版本.

任何人都可以帮我解释一下这个问题是什么?

非常感谢!!!

编辑:

我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.myproject"
android:versionCode="5"
android:versionName="2.0" 
android:installLocation="preferExternal"
>

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>

<application
    android:uiOptions="splitActionBarWhenNarrow"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    >

    <!-- enable the search dialog to send searches to SearchableActivity throughout the application -->
    <meta-data
        android:name="android.app.default_searchable"
        android:value=".SearchableActivity" />

    <activity
        android:label="@string/app_name"
        android:name=".MainActivity" 
        android:screenOrientation="portrait"
        android:theme="@style/Theme.NoBackground">                                  

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

    <activity …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-2.2-froyo android-2.3-gingerbread zbar

7
推荐指数
1
解决办法
4867
查看次数