从现有项目中执行以下步骤:
1.修改build.gradle(模块应用程序)看起来像这样(很多变化!):
apply plugin: 'com.android.model.application'
model {
android.signingConfigs {
create ("myConfig") {
keyAlias '--your-key-alias--'
keyPassword '--key-password--'
storeFile file('--/path/to/keystore.jks--')
storePassword '--store-password--'
}
}
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "--your.app.name--"
minSdkVersion.apiLevel 19
targetSdkVersion.apiLevel 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles.add(file('proguard-android-optimize.txt'))
proguardFiles.add(file('proguard-rules.pro'))
signingConfig = $("android.signingConfigs.myConfig")
}
}
ndk {
moduleName "--c-file--"
ldLibs.addAll(["android", "log"])
}
}
android.dexOptions {
javaMaxHeapSize "2048m"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.3.1'
}
您可以复制/粘贴上面的代码,并使用“–value–”修改至少值以匹配您的值.
2.修改build.gradle(项目)
它说的是这样的:
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
对此:
dependencies {
classpath 'com.android.tools.build:gradle-experimental:0.9.3'
}
我的示例0.9.3中的数字是最新版本的gradle-experimental,可以找到here.最后将gradle-wrapper.properties中的gradle版本更改为Android Studio推荐的版本(如果您还没有).
3.移动proguard设置文件
proguard-android-optimize.txt到app / proguard-android-optimize.txt
4.从java添加调用
像这样
static {
System.loadLibrary("--c-file--");
}
private native byte my_jni(Context context, byte[] mByte, int i);
改变你的需求.上面的例子加载了c文件(没有扩展名写入) – 在gradle文件中声明的相同,并调用函数my_jni,传递应用程序的Context,一些字节数组和一些int,期望函数返回一个字节.
5.在JNI中创建函数:
现在,您的功能名称以红色突出显示 – 允许Android Studio创建它创建功能…单击行上的红色指示灯.这将在您的c文件中创建该函数并将焦点更改为它.
完成
进一步阅读here.
提示:
>注意释放malloc的所有内容,为每个GetByteArrayElements释放ReleaseByteArrayElements等等>注意如何正确地将一些危险值从C返回到Java,如数组和字符串