在构建时从Gradle设置静态变量

时间:2015-12-04 07:45:43

标签: java android git android-studio gradle

我有一个Android项目,在git下管理。 Git有2个分支(更多......但重要的是那两个),branch-a&分支-B。 是否可以设置gradle来确定项目构建的分支,并在项目的某个类中设置public static String以取决于分支的值?

感谢。

2 个答案:

答案 0 :(得分:4)

是的,您的两个分支中都可能有一个gradle.properties文件(您可以阅读有关属性here),包含一些属性,例如buildBranchName。但是,分配给此属性的值在每个brach中都会有所不同。例如,在brach1中,gradle.properties文件与build.gradle脚本位于同一目录中,并且具有

buildBranchName=branch1
里面的属性。同时,branch2中的gradle.properties文件包含:

buildBranchName=branch2

然后,由于您有一个android项目,您可以使用BuildConfig类生成选项将此变量传递给您的应用程序源。您可以在“增强BuildConfig”部分中了解它here。您所需要的只是为构建类型的自动生成类添加一些属性,如:

android {
    ...
    buildTypes {
        debug {
            buildConfigField "String", "BUILD_BRANCH", buildBranchName
        }
        ...
    }    
}

然后,在构建期间,将生成最终的类BuildConfig并且它将具有BUILD_BRANCH字段,您可以将其用作此类的简单静态字段。

此外,如果某些人有一个非android项目,那么有plugin,它允许对所有java项目执行相同的操作。

答案 1 :(得分:2)

是的,您可以通过向项目中添加风味来实现这一目标

e.g。

class TimelineFeedViewController: PFQueryTableViewController {
    var userLike = PFUser.currentUser()?.relationForKey("likes")

    @IBAction func likeButtonTapped(sender: UIButton) {
        // The following code has errors - for example, `object` is an unresolved 
        // identifier (it's supposed to be a PFObject that holds a post at a specific 
        // indexPath)
        // Also, I cant access the likeButton for some reason. Only when I do
        // cell.likeButton in `cellForRowAtIndexPath`.
        // If the button is liked already (it's filled)
        // Toggle likeButton image to UNfilled version
        // "if likeButton isLiked == true" below is pseudocode of what I am trying to do
        if likeButton isLiked == true {
            let image = UIImage(named: "likeButtonUnfilled")
            cell.likeButton.setImage (image, forState: UIControlState)

            // Decrement the likeCount
            object!.decrementKey("count")

            // Remove the relation bet user and post
            self.userLike?.removeObject(object!)
        } else {
            // the button is NOT liked already (it's not filled)
            // toggle the image to the filled version
            let image = UIImage(named: "likeButton")
            cell.likeButton.setImage (image, forState: UIControlState)

            // Increment the likeCount
            object!.incrementKey("count")

            // Add the relation bet. user and post
            self.userLike?.addObject(object!)
        }

        object!.saveIngBackground()
        PFUser.currentUser()?.saveInBackground()

        self.tableView.reloadData()
    }
}

现在可以像这样访问这个值

e.g。

devtools::run_examples()

如有任何问题,请告诉我