2013-07-15 24 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 
    } 
}