Android NDKを含む既存のプロジェクトに取り組み始めました。私はbuild.gradleで2つの問題を抱えています。これは私がアプリをビルドするのが不可能です。参考までに、私の同僚(誰がそれに取り組んでいたか)アプリを構築することができました。
私はすでにNDKをインポートしています。プロジェクト構造から、正しいAndroid NDKパスを確認できます。
Build.gradleは次のようになります。
import org.Apache.tools.ant.taskdefs.condition.Os
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
// The Fabric Gradle plugin uses an open ended version to react
// quickly to Android tooling updates
classpath 'io.fabric.tools:gradle:1.21.5'
}
}
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
apply plugin: 'com.Android.application'
apply plugin: 'io.fabric'
apply plugin: 'realm-Android'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
Android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
dataBinding{
enabled = true;
}
defaultConfig {
applicationId "com.lucien.myapp"
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName "1.0.0"
ndk {
moduleName "DSPLib-jni"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
sourceSets.main.jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk
sourceSets.main.jniLibs.srcDir 'src/main/libs'
// call regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
workingDir file('src/main')
commandLine getNdkBuildCmd()
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
task cleanNative(type: Exec) {
workingDir file('src/main')
commandLine getNdkBuildCmd(), 'clean'
}
clean.dependsOn cleanNative
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:24.2.0'
compile 'com.Android.support:design:24.2.0'
compile 'com.Android.support:support-v4:24.2.0'
compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'
compile 'com.orhanobut:dialogplus:1.11@aar'
compile('com.crashlytics.sdk.Android:crashlytics:2.6.2@aar') {
transitive = true;
}
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.google.code.gson:gson:2.7'
}
def getNdkDir() {
if (System.env.Android_NDK_ROOT != null)
return System.env.Android_NDK_ROOT
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def ndkdir = properties.getProperty('ndk.dir', null)
if (ndkdir == null)
throw new GradleException("NDK location not found. Define location with ndk.dir in the local.properties file or with an Android_NDK_ROOT environment variable.")
return ndkdir
}
def getNdkBuildCmd() {
def ndkbuild = getNdkDir() + "/ndk-build"
if (Os.isFamily(Os.FAMILY_WINDOWS))
ndkbuild += ".cmd"
return ndkbuild
}
「org.Apache.tools.ant.taskdefs.condition.Os」をインポートしようとする最初の行に問題があります:シンボル「tools」を解決できません
また、「新しいGradleException( "...")をスロー」と同じ種類の問題
Build.gradleの何かを更新する必要がありますか?または問題はどこかにありますか?
よろしくお願いします!
ここに来た人のために、Android Studio 2.1に戻って問題を解決しました。安定バージョン2.2のリリース以来、それはうまく機能しています。
Javaから、他の利用可能な例外を使用できます:
throw new FileNotFoundException("Could not read version.properties!")