是否可以使用像应用程序项目中的库项目中定义的字符串之类的资源?如果是这样,怎么样?因为我似乎无法解决我想解决的字符串,如下所示:
String title = "sample";
int id = ressources.getIdentifier(title, "string", "com.package");
Run Code Online (Sandbox Code Playgroud)
给了我这个例外
WARN/ResourceType(278):获取资源号0x00000000的值时没有包标识符WARN/System.err(278):android.content.res.Resources $ NotFoundException:字符串资源ID#0x0
我正在寻找的字符串("sample")肯定是在这个包中提供的库项目的strings.xml中.我甚至可以在R.java中看到它
我们可以在我们的应用程序中使用任何免费的Android动画库吗?
android内置动画非常基本.我想要一些更有趣的东西.
-
提前致谢.
我有两个Android应用程序具有类似的功能,但不同的drawables和布局.
我想将所有代码和资源放在库项目中,并覆盖引用该库的两个应用程序中的一些drawable和布局.
我创建了一个引用该库的应用程序.我将所有资源从库复制到应用程序并更改了一些drawable.我也改变了一些字符串资源.当我在Eclipse中的布局编辑器中查看其中一个更改的布局时,我看到了正确的重写图像.
当我启动应用程序时,我看到我在应用程序中更改的字符串资源正确显示(库字符串被应用程序的资源覆盖),但我的ImageViews 的drawables 都取自库的资源.
我还对一些布局资源进行了更改(移动并调整了一些图像的大小).当我启动使用更改的布局的活动(源代码在库中的活动)时,我看到带有旧(库)drawable的新(应用程序)布局.
我尝试ImageView用两种方式定义s 的drawable :
在布局xml中: android:src="@drawable/image_id"
在活动的代码中:
ImageView view = (ImageView)findViewById(R.id.viewId);
view.setImageResource(R.drawable.image_id);
Run Code Online (Sandbox Code Playgroud)在这两种情况下,我看到的图像都来自库项目的资源,而不是应用程序.
如果我无法解决这个问题,我将不得不复制这两个应用程序中的所有代码,这将是一个耻辱.
难道我做错了什么?
创建项目时,默认情况下会添加此库:
Android的支持,v4.jar
我可以删除它吗?如果我删除库会怎么样?该应用可以停止在某些手机中工作吗?
我通过下载库,将其添加到工作区,然后将其作为库引用,使Google Maps Android API v2在我的Android应用程序上完美运行.
但是一旦包含Map Fragment的活动开始,我仍然会收到此错误
Could not find class 'maps.i.k', referenced from method maps.z.ag.a
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我正在使用支持地图片段
这个错误似乎不会影响我,也不会崩溃应用程序或任何东西,我是否应该费心修复它?
添加了清单 PS E_SelectJourney是我显示和使用地图的地方
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.HelloMap.AndroidApp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<permission
android:name="com.HelloMap.AndroidApp.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.HelloMap.AndroidApp.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<application
android:allowBackup="true"
android:configChanges="orientation"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/Theme.Sherlock" >
<uses-library
android:name="com.google.android.maps"
android:required="true" />
<activity
android:name="com.HelloMap.AndroidApp.A_SplashScreen" …Run Code Online (Sandbox Code Playgroud) android android-maps android-library google-maps-mobile android-debug
今天,我将Android SDK和Eciple ADT更新到最新版本(ADT Rev 22).在重新启动Eclipse之后,每当我引用自定义库时,它都非常不满意构建路径.
此屏幕截图中显示了一个示例:

我的自定义"Android Utilities Library"编译得很好,但依赖它的所有内容都显示了构建路径错误.例如,当我调查"Android URA Library"的构建路径设置时,它向我显示了android_utilities_library.jar"Android Dependencies"下缺少的错误(实际上这是真的,库将构建到各个类文件中bin/classes).
在阅读了使用库项目构建路径错误的解决方案后,我尝试以正确的顺序清理并手动构建我的项目,但无济于事.
我以前从未处理过这个,所以我不知道如何解决这个问题.
任何帮助表示赞赏.谢谢!
我创建了一个aar,并将其作为模块添加到我的项目中.在这个模块中,我有一个我想要运行的HelloWorldActivity.
我的模块清单看起来像这样.
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="ir.sibvas.testlibary1.HelloWorldActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="ir.sibvas.testlibary1.HelloWorldActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
现在我可以使用此代码从我的项目开始此活动
Intent intent = new Intent("ir.sibvas.testlibary1.HelloWorldActivity");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但正如你可以看到这个代码是隐含的,隐式调用的问题是,如果我在多个应用程序中使用此模块,两者都安装在用户设备上,它将向用户显示应用程序选择器对话框.那么如何才能使这个调用显式化,阻止用户切换应用?
此代码将无法运行,因为HelloWorldActivity与调用活动不在同一个包中
Intent intent = new Intent(this, HelloWorldActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我真的不想为每个使用它的项目更改我的模块.
我正在探索使用react-native创建一个iOS框架(android库)的可能性,该框架可以分发,并且可以通过包含构建应用程序时与应用程序集成.
例如,维护单个代码库为ios创建一个".framework",或者为android(基本上编译代码而不是反应组件代码)创建.jar作为开发人员社区的分发.
我正在尝试在Android Studio(3.1)中创建一个包含Android库和Java库的项目.Java库依赖于Android库.这两个都是我项目中的模块,如下所示:
MyProject
|-android
|-java
Run Code Online (Sandbox Code Playgroud)
两者都出现在settings.gradle中:
include ':android', ':java'
Run Code Online (Sandbox Code Playgroud)
Java库依赖于Android库,如下所示:
java(build.gradle):
apply plugin: 'java-library'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':android')
}
...
Run Code Online (Sandbox Code Playgroud)
android(build.gradle):
apply plugin: 'com.android.library'
...
Run Code Online (Sandbox Code Playgroud)
尝试同步项目时,我收到以下错误:
无法解决:project :: android
为什么?
PS反过来(Android依赖于Java)工作得很好.
我正在开发一个Android库,我想在我的代码中应用篡改检测机制,因为它调用了一些敏感的金融Web服务.
我要实现的是在运行时以编程方式计算apk(或其重要部分)的校验和,这样我就可以防止重新打包或重新编译的apk能够造成任何伤害(防篡改).
到目前为止,我想出的是计算校验和applicationInfo.publicSourceDir.但我不确定具有多个dex文件或多个splitApks的应用程序会发生什么.
以编程方式基于Android应用程序的代码库计算校验和的最可靠方法是什么?
android ×10
android-library ×10
java ×2
aar ×1
android-maps ×1
buildpath ×1
dependencies ×1
dex ×1
drawable ×1
eclipse ×1
gradle ×1
ios ×1
react-native ×1
resources ×1
xml ×1