【发布时间】:2016-07-13 16:04:50
【问题描述】:
我刚刚创建了我的第一个使用 JNI 和 NDK 的 Android 应用程序,简单来说就是 Hello-JNI。具有返回字符串的唯一函数。 我签署了解压后的 APK,如果我看到似乎不是本机编译的 .so 文件。我期望一个二进制代码。我读了函数和字符串的名称。 我的目标是使用 SDK 编写原生代码来隐藏没有被 proguard 覆盖的字符串。 我用的是 Android Studio 2.1.2
Build.gradle 项目
buildscript {
repositories {
jcenter()
}
dependencies {
//classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.android.tools.build:gradle-experimental:0.7.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Build.Gradle 应用程序
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.danielezampieri.jniapp"
minSdkVersion.apiLevel 18
targetSdkVersion.apiLevel 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles.add(file('proguard-android.txt'))
}
}
ndk {
moduleName "jniapp"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:design:23.0.0'
}
gradle-wrapper.properties
#Mon Dec 28 10:00:20 PST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
local.properties
ndk.dir=P\:\\Android\\sdk\\ndk-bundle
sdk.dir=P\:\\Android\\sdk
【问题讨论】:
-
我说得对吗,您打开 .so 文件并看到纯文本,而不是十六进制命令?顺便说一句,我建议你尝试 android studio 2.2 preview 5。它支持不同的构建系统(CMake、Android.mk makefile、ndk-build)。自 2.1 以来修复了许多错误
-
我在等待 2.2 正式版,我怀疑也有很多变化。
标签: android android-ndk java-native-interface