Подтвердить что ты не робот

В титане, можно ли получить доступ к файлам ресурсов (xml) сторонних баннеров из модуля android?

Я работал над тем, как обращаться к файлам сторонних jar-пакетов (xml файлы, изображения, называемые здесь) от модуля android. Можно ли это сделать?

Поскольку эти файлы ресурсов вызывается скомпилированными файлами jar-сторонних сторон, это значит, что я не могу использовать метод TiRHelper.getApplicationResource в собственном Java-коде, если я не:

  • декомпилировать файлы jar в java-код.
  • заменить всю ссылку на исходный ресурс на TiRHelper.getApplicationResource
  • перекомпилируйте исходный код сторонней версии java для jar файла.

(Этот сторонний проект https://github.com/ShareSDKPlatform/ShareSDK-for-Android/tree/master/Sample, я могу легко его скомпилировать и запустить. Вы можете видеть, что есть файлы ресурсов в /res, и один из файлов jar использовал эти файлы ресурсов.)

Я искал целый день, но не нашел ответа.

У меня есть некоторые подсказки из официального документа но он не был успешным. ошибка показывает, что ресурс не имеет доступа к java-коду из титанового модуля.

этот же вопрос (http://developer.appcelerator.com/question/178857/unable-to-load-resources-from-3rd-party-librarys-resourced-in-android-module) не ответил.

этот ответ (http://developer.appcelerator.com/question/49671/android-r-references-in-appcelerator-module#answer-266726) дает мне понять, что методы:

getResource() gives an Error
getAndroidResource() gives an Error
but getApplicationResource() DOES work

и есть подсказка, что "apklib" может быть полезен, но после чтения некоторых сообщений я обнаружил, что он был удален с официального сайта maven. и теперь Google рекомендует использовать файл "aar". Но согласно официальному выпуску Titanium (https://jira.appcelerator.org/browse/TIMOB-18565), он еще не поддерживается титаном.

Итак, я хочу знать, можно ли позволить java-коду (например, активности) обращаться к своим файлам ресурсов, связанным с сторонними банками (значение/string.xml или так) от модуля Titanium? если да, есть ли какой-нибудь пример кода, на который я могу ссылаться?

Большое спасибо!

4b9b3361

Ответ 1

(быстрый и короткий ответ: поместите файлы ресурсов как часть вашего проекта "Титан", но не поместите их в "модуль". Если вы настаиваете на том, чтобы поместить их в "модуль", читайте дальше.)

Наконец, я получил ответ.

Официальный документ верен, просто поместите файлы ресурсов сторонних баннеров (res папки собственного проекта андроида) под титановый модуль android/platform/android. это!

например. моя структура проекта модуля показана ниже:

# name: test_ti_module_qq_login:
android
  \--assets
  \--build
  \--dist
  \--lib
  \--libs
  \--src
  \--platform
     \--android
        \--res    # just put the resources here in your module! 
           \--drawable
           \--drawable-hdpi
           \--drawable-xhdpi
           \--layout
           \--values
assets
documentation
example
LICENSE
... 

и FYI, родной файл ресурсов для Android выглядит следующим образом:

# A native Android project structure   
▸ assets/          
▸ bin/             
▸ gen/             
▸ libs/           
▾ res/     # these are the bundled resource files
  ▸ drawable-hdpi/     
  ▸ drawable-xhdpi/    
  ▸ layout/     
  ▸ values/    
  ▸ src/       

Коренная причина, по которой Titanium продолжает показывать resource files missing, заключается в том, что я пропустил некоторые файлы ресурсов. (но это немного прямо, что демо-версия собственного кода может быть запущена без ошибок, независимо от того, наконец, я получил решение)

Добавление:

Кажется, что многие люди столкнулись с одной и той же проблемой? В эти дни я открою исходный текст моего проекта.

Ответ 2

Обновление с использованием новой информации. Чтобы получить это, вам просто нужно объединить папку res из github в папку platform/android/res. Затем, когда вы компилируете свой модуль как обычно.

===========================

Если вы получаете доступ из модуля в java, попробуйте использовать TiRHelper.getApplicationResource для вещей, которые вы предоставляете.

Так, например, если вы добавили:

платформы/Android/значения/strings.xml Привет!

Вызов будет

TiRHelper.getApplicationResource("string.helloworld");

Класс Srouce

Javadoc

Если вы нашли это полезным, пожалуйста, голосуйте. Если не сообщите мне, я могу настроить.