在Gradle中禁用静态库构建

时间:2015-01-13 18:32:40

标签: java c++ gradle native

我正在使用gradle为我们的java项目构建一个JNI库,它工作正常,但我似乎无法弄清楚如何保持gradle构建文件的共享和静态版本。我想禁用静态库的构建来加速构建过程。添加“共享”标签似乎没有办法解决问题。

从gradle构建文件:

libraries {
  bulletjme {
      shared
  }
}

gradle手册指出“例如,当您定义一个名为helloworld的库并在Linux上构建时,Gradle默认会生成libhelloworld.so和libhelloworld.a二进制文件。”但是它没有说明如何禁用任何二进制文件的构建。

感谢您的回答!

2 个答案:

答案 0 :(得分:2)

在Gradle 2.11中,可以通过将buildable属性设置为false来设置。虽然文档说它是只读的,但它确实有效。

model {
    components {
        libraryA(NativeLibrarySpec)
        libraryB(NativeLibrarySpec)
        all {
            binaries.withType(StaticLibraryBinarySpec) {
                buildable = false
            }
        }
    }
}

检查组件输出时,Gradle现在会说用户禁用了库:

 lv.setOnItemClickListener(new OnItemClickListener()
   {
  @Override
  public void onItemClick(AdapterView<?> adapter, View v, int position,
        long arg3) 
  {

  //get all the data from list and send to next activity where you can view your data as you want:

         Intent i1=new Intent(A.this, B.class);
         i1.putExtra("data", lv.get(position).getData());
         startActivity(i1);

    }
   });

这也可以一次全局处理所有库:

String data=getIntent.getStringExtra("data");

答案 1 :(得分:0)

为了防止gradle为&#34; main&#34;构建静态库。组件,您需要在build.gradle中包含以下代码:

model {
    components {
        main(NativeLibrarySpec) {
            sources {
                c {
                    binaries.withType(StaticLibraryBinarySpec) { bin ->
                        binaries.remove(bin)
                    }
                }
            }
        }
    }
}
相关问题