Android.mkファイルのgradleから定義された変数を使用する方法を知っていますか、とにかくgradleからAndroid.mkに変数を渡すにはどうしたらいいですか?Android.mkでgradle変数を使用するには?
私はこれが奇妙に思える質問であることは知っていますが、私は多くの可能性を試してみて、うまくいきませんでした。
実際、私はクラスメートとの共同プロジェクトに取り組んでおり、OpenCVと他のタイプのライブラリを使用しています。問題は、これらのライブラリのほとんどに開発者のコンピュータによって異なるパスがあることです。 gitを使用しているので、これらのファイルには常に競合があります。
この問題を解決するために、まずファイル/etc/profile.d/my_proj.sh
の環境変数を使用していますが、動作しませんでした。だから私はこれらのすべてのパスを置くプロパティファイルを作成し、ファイルを読み込み、それらの値をbuild.gradleファイルで取得する関数を作成しました。今、これらの変数をAndroid.mk
ファイルと共有する方法を知りたいと思います。
ここで私のコードをあなたと共有しています。 build.gradle
の機能です。
apply plugin: 'com.android.library'
import org.apache.tools.ant.taskdefs.condition.Os
def Properties props = new Properties()
def propFile = file('/etc/profile.d/my_proj.properties') //pay attention to the path
def opencvRoot;
if (propFile.canRead()){
props.load(new FileInputStream(propFile))
println(props)
if (props!=null && props.containsKey('OPENCVROOT')) {
opencvRoot = props['OPENCVROOT']
println("opencvRoot = ${opencvRoot}")
}else{
println("Doesn't contains opencvRoot = ${opencvRoot}")
}
}else{
println("I can't read opencvRoot = ${opencvRoot}")
}
android {
compileSdkVersion versionCompiler
buildToolsVersion versionBuildTool
defaultConfig {
minSdkVersion 18
targetSdkVersion versionTarget
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
ndkBuild {
arguments "OPENCV_ROOT:=${opencvRoot}"
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jniLibs.srcDir 'src/main/libs'
jni.srcDirs = []
}
}
}
Android.mk
ファイル
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#opencv
OPENCVROOT := $(OPENCV_ROOT) # This doesn't work
# OPENCVROOT:= /home/username/OpenCV-android-sdk
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk
私は本当に任意の助けをいただければ幸いです!
私はこれは古い記事ですけど、持っていますあなたはこれまでこれを解決しましたか? –
まだ!今でも私はこれを行う方法を理解することはできません。どんな助けでも大いに感謝します。私たち(私のチームと私)はAndroid.mkファイルにデフォルトのパスを設定しなければならなかったので、誰も自分の設定にしたがってファイルを変更できますが、ファイルをプッシュすることはできません。 – Erman