2013-07-15 21 views
3

我可以在我的android项目中成功设置Transfuse,但是当涉及到使用Android Studio运行应用程序时,它会失败。可能是因为清单xml必须为Transfuse处理而为空。Android Studio with Transfuse

有没有人有过这些工作在一起?

+0

Gustavo,你在看什么?我能够构建并部署到我的手机和模拟器。您是否在Android Studio之外使用Maven构建命令行? –

+0

嗨johncarl,我实际上在Android Studio中使用了Gradle。但我不想从命令行运行它,我使用该运行按钮从android studio运行它。所以它只能从命令行工作?只要它有效,我真的不介意,但不幸的是,Transfuse文档只提供了关于如何从命令行运行应用程序的maven版本。 –

+0

我没有用Gradle试过它,但我不妨试试它。你有没有可以在github上分享的例子? –

回答

5

Transfuse和Android Studio在一起工作得非常好。诀窍是将Transfuse与Gradle集成。一旦你获得了Gradle的工作,构建就会启动注解处理器并运行Transfuse。

我已经把这里的实例参考项目:https://github.com/johncarl81/transfuse/tree/master/examples/gradle

这里的程序到那里:

  1. 有无Android Studio中生成一个新的Android项目
  2. 移动的AndroidManifest.xml文件到Android项目的根目录,即: 〜/ project/src/main/AndroidManifest.xml - >〜/ project/AndroidManifest.xml

  3. 设置在gradle.build文件中的新的AndroidManifest.xml位置:

    android { 
        ... 
        sourceSets.main { 
         manifest.srcFile 'AndroidManifest.xml' 
        } 
    } 
    
  4. 添加APT插件:

    buildscript { 
        repositories { 
         mavenCentral() 
        } 
        dependencies { 
         classpath 'com.neenbedankt.gradle.plugins:android-apt:1.1' 
         classpath 'com.android.tools.build:gradle:0.6.+' 
        } 
    } 
    apply plugin: 'android' 
    apply plugin: 'android-apt' 
    
  5. 最后补充转印定影和输血的API:

    dependencies { 
        apt 'org.androidtransfuse:transfuse:0.2.7' 
        compile 'org.androidtransfuse:transfuse-api:0.2.7' 
    } 
    

您的最终gradle.build将如下所示:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.1' 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 
apply plugin: 'android' 
apply plugin: 'android-apt' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    apt 'org.androidtransfuse:transfuse:0.2.7' 
    compile 'org.androidtransfuse:transfuse-api:0.2.7' 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 19 
    } 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_6 
     targetCompatibility JavaVersion.VERSION_1_6 
    } 
    sourceSets.main { 
     manifest.srcFile 'AndroidManifest.xml' 
    } 
} 

编辑:

最后你可能希望将源/ apt_generated /调试或源/ apt_generated /释放文件夹添加为项目配置下的源文件夹。

第二个编辑:

我全新的Android-APT插件

+0

woww非常感谢你!对不起,不回复你..忙于其他的东西。无论如何,出于某种原因,我得到“Gradle :: Annotation processor'org.parceler.ParcelAnnotationProcessor'not found。”有任何想法吗? –

+0

也得到了另外两个警告:“Gradle ::上一轮创建的类型为'dummy1374419125337'的文件将不会进行注释处理。”和“Gradle ::类型未封闭的文件'[dummy1374419124436,dummy1374419125337]';这些类型不会经过注释处理” –

+0

我并不想要添加ParcelerAnnotationProcessor,我已经从答案中删除了它,并且应该避免你提到的错误。至于警告他们是良性的,实际上,Transfuse运作需要非封闭文件警告。如果可能的话,我会让他们中的一些人静音。 –

1

对于任何挣扎与输血3测试版5“找不到AndroidManifest.xml中”更新上面的例子中,我固定通过添加到我的gradle文件:

apt { 
    arguments { 
     androidManifestFile variant.outputs[0].processResources.manifestFile 
    } 
}