命令行编译JNI

vs2015 ctp里面已经支持了移动平台开发,利用C++开发APK,或者win10平台的通用app都行。但是里面配置的环境还是很坑爹的,里面的hello word都编译错误。因为产品还没上市“外国专家”,还没当小白鼠,给出解决方案。所以,我们只能手工解决。



可以看到vs2015环境也是利用开源工程,不过里面llvm的编译器老是报错,太烦了,去尼玛的IDE,反正VS也是利用这个SDK生成应用,我们也可以利用命令行自己生成,需要的环境都在上面,请按照自己机器修改。


编译的例子,也是NDK自带的android-ndk-r10\samples\hello-jni,就是生成一个.so,然后java生成的UI调用这个so导出函数,显示返回结果。


大体步骤如下:


在android-ndk-r10\samples\hello-jni\jni目录上运行

ndk-build
这样会生成不同平台的libhello-jni.so


然后在android-ndk-r10\samples\hello-jni下作为我们工作目录

aapt.exe package -f -m -J D:\Android\android-ndk-r10\samples\hello-jni\gen -S res -I D:\Android\sdk\platforms\android-20\android.jar -M AndroidManifest.xml
生成hello-jni\gen\com\example\hellojni\R.java

javac gen\com\example\hellojni\R.java src\com\example\hellojni\HelloJni.java -bootclasspath D:\Android\sdk\platforms\android-20\android.jar -d bin

把所有的Java编译成class

dx.bat --dex --output=.\bin\classes.dex .\bin

把生成class变成dex文件,就是可以被谷歌虚拟机执行的中间格式


aapt.exe package -f -M AndroidManifest.xml -S res -I D:\Android\sdk\platforms\android-20\android.jar -F bin\tmp

把所有需要的资源打包


android.bat list targets

android update project -p . -t android-20

这样是确定本地adt支持生成android版本,然后运行命令为我们工程生成build.xml


ant release

利用ant生成bin\HelloJni-release-unsigned.apk


keytool -genkey -alias release -keyalg RSA -validity 20000 -keystore release.keystore

jarsigner  -verbose -keystore release.keystore -storepass 123456 -keypass 123456 -signedjar .\bin\HelloJni-release.apk .\bin\HelloJni-release-unsigned.apk release

安装命令行提示生成密钥,并用它来签名你的apk


然后就是adb install新鲜出炉的apk在你的手机上看到



打开你的apk看到生成4个平台的so都打包进去了,而安装时候,apk会自动确定安装到机器上的是哪个。




这样就是完全手工的打通了编辑环境,发布再也不用IDE了,可以运行一个批处理,但是写代码的自动提示和真机断点调试还是利用IDE比较方便。


拨开IDE外衣才能看到一个程序到底发生了什么,是什么把你的字符串文本变成了可以执行的程序,不是神奇的魔法,不是靠运气,是靠一步一步的操作,仅此而已。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值