2016-08-25 144 views
0

目標創建原生的Android APK

創建一個原生的Android APK:通過命令行只(生成文件)

  • 僅通過vim & Makefile
  • 沒有用的gradle, ant, maven, android.mk和所有其他的東西

問題

  • 我已經通過命令行創建了一個簡單的非本機Android apk &在我的上播放三星S7
  • 當我嘗試loadLibrary("hello")共享對象然後logcat告訴我它找不到它。
  • .so文件通過aapt add hellojni.apk ./lib/arm64/libhello.so

錯誤報告肯定添加

08-25 16:56:30.959 15637 15637 W ResourcesManager: getTopLevelResources: /data/app/com.example.hellojni-1/base.apk/4.0 running in com.example.hellojni rsrc of package com.example.hellojni 
08-25 16:56:30.969 15637 15637 W System : ClassLoader referenced unknown path: /data/app/com.example.hellojni-1/lib/arm64 
08-25 16:56:30.969 15637 15637 W amo  : Trying to load shared library! 
08-25 16:56:30.969 15637 15637 E AndroidRuntime: FATAL EXCEPTION: main 
08-25 16:56:30.969 15637 15637 E AndroidRuntime: Process: com.example.hellojni, PID: 15637 
08-25 16:56:30.969 15637 15637 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.hellojni-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.hellojni-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libhello.so" 

UPDATE

解決方案在https://github.com/skanti/Android-Project-Command-Line

回答

1

您在此處指定的路徑似乎是罪魁禍首:

aapt add hellojni.apk ./lib/arm64/libhello.so 

我嘗試使用相同類型的路徑添加一個僞造文件的APK,然後列出APK內容:

./aapt.exe add test.apk ./lib/libbcc.dll 
./aapt.exe list test.apk 

,並得到這個輸出中:

./lib/libbcc.dll 

iee我最終在APK的根目錄中找到了一個名爲.的目錄,其中創建了一個lib目錄,其中放置了libbcc.dll文件(我通過使用7zip打開APK來確認此目錄)。

如果我刪除./

./aapt.exe add test.apk lib/libbcc.dll 
./aapt.exe list test.apk 

我得到正確的結果:

lib/libbcc.dll 

(我都通過Windows cmd並MSys2測試此,具有相同的結果)