#android #rust
#Android #Ржавчина
Вопрос:
Я эмулирую Ubuntu на устройстве Android с помощью пользовательского приложения. Я хочу установить android-rs-glue для упаковки моих приложений Rust в виде APK, но мне нужно, чтобы Android SDK / NDK был правильно установлен. Вот в чем проблема:
Установите некоторые компоненты в SDK:
$ ./android-sdk/tools/bin/sdkmanager "platform-tools" "platforms;android-18" "build-tools;26.0.1"
Результат:
$ sudo . "$ANDROID_HOME/bin/sdkmanager"
"platform-tools"
"platforms;android-18"
"build-tools;26.0.1"
# Error: Could not find or load main class
# com.android.sdklib.tool.sdkmanager.SdkManagerCli
Я сделал:
$ export CLASSPATH=$CLASSPATH:$ANDROID_HOME/lib
После просмотра sdk/bin/sdkmanager
я вычел, что для этого также требуется копия sdk/lib
as ~/lib
; тогда я получаю это:
Loading package information...
Loading local repository...
n% Loading local repository...
n% Fetch remote repository...
6% Computing updates...
8% Computing updates...
8% Computing updates...
10% Computing updates...
10% Computing updates...
Warning: File /root/.android/repositories.cfg could not be loaded.
Warning: Failed to find package platforms
Собираюсь протестировать это дальше.
Комментарии:
1. Похожие: github.com/tomaka/android-rs-glue/issues/177 и github.com/CypherpunkArmory/UserLAnd/issues/700
Ответ №1:
ANDROID_HOME
должен быть каталог sdk, а не sdk / tools dir.- Вы должны указать имя jar при добавлении jar в classpath.
Основной класс com.android.sdklib.tool.sdkmanager.SdkManagerCli находится в tools/lib/sdklib-26.0.0-dev.jar . Но вам не обязательно явно добавлять его в classpath, поскольку он будет добавлен самим sdkmanager
скриптом. Вы можете увидеть файлы jar в каталоге tools / lib, добавленные к classpath с помощью этой строки в sdkmanager
файле
CLASSPATH=$APP_HOME/lib/dvlib-26.0.0-dev.jar:$APP_HOME/lib/jimfs-1.1.jar:$APP_HOME/lib/jsr305-1.3.9.jar:$APP_HOME/lib/repository-26.0.0-dev.jar:$APP_HOME/lib/j2objc-annotations-1.1.jar:$APP_HOME/lib/layoutlib-api-26.0.0-dev.jar:$APP_HOME/lib/gson-2.3.jar:$APP_HOME/lib/httpcore-4.2.5.jar:$APP_HOME/lib/commons-logging-1.1.1.jar:$APP_HOME/lib/commons-compress-1.12.jar:$APP_HOME/lib/annotations-26.0.0-dev.jar:$APP_HOME/lib/error_prone_annotations-2.0.18.jar:$APP_HOME/lib/animal-sniffer-annotations-1.14.jar:$APP_HOME/lib/httpclient-4.2.6.jar:$APP_HOME/lib/commons-codec-1.6.jar:$APP_HOME/lib/common-26.0.0-dev.jar:$APP_HOME/lib/kxml2-2.3.0.jar:$APP_HOME/lib/httpmime-4.1.jar:$APP_HOME/lib/annotations-12.0.jar:$APP_HOME/lib/sdklib-26.0.0-dev.jar:$APP_HOME/lib/guava-22.0.jar
где APP_HOME
находится каталог инструментов (android-sdk/tools/bin/.. который преобразуется в /android-sdk/tools / )
Поэтому, пожалуйста, убедитесь sdklib-26.0.0-dev.jar существует в каталоге tools / lib и содержит класс SdkManagerCli