我设法很好地重构了我的应用程序,因此,除了派生的Activity类中的一些方法之外,所有内容都在库项目中.
它工作得很漂亮,除了Eclipse的控制台(不是 LogCat!)发出以下错误消息:
[2011-06-13 19:54:08 - MyLibrary] Could not find MyLibrary.apk!
Run Code Online (Sandbox Code Playgroud)
我清理了两个项目(库和应用程序),重新启动了Eclipse,重新构建了项目,但是这个奇怪的错误消息仍然存在.
这个错误信息是什么意思?(特别是在一切似乎都运行良好的情况下)
我怎么摆脱它?
更新:我尝试删除项目,然后根据下面的建议重新导入它.它没有帮助.然后我发现这个线程帮助我意识到我<uses-library>在应用程序的AndroidManifest.xml中引用了MyLibrary.我删除了它,清理了项目并重建了.问题依然存在.
我现在怀疑这是"真正的问题",例如我对某些路径或其他东西的配置错误.会是什么呢?
我已经构建了我的android库包(aar),并在"..\app\build\outputs\aar"文件夹中创建了build的结果.这个文件夹中的文件名为"app-debug.aar",所以我猜它是在调试模式下构建的,所以我想知道如何生成构建的版本,即"app-release.aar".我怎样才能做到这一点?此外,是否可以使用另一个自定义名称生成构建,例如,"myCustomAppName-release.aar"而不是"app-release.aar".
有没有办法让Android应用程序在运行时下载和使用Java库?
这是一个例子:
想象一下,应用程序需要根据输入值进行一些计算.应用程序请求输入这些值,然后检查所需的Classes或Methods是否可用.
如果没有,它将连接到服务器,下载所需的库,并在运行时加载它以使用反射技术调用所需的方法.实施可能会根据各种标准(例如下载库的用户)而发生变化.
我真的很困惑和沮丧因为我无法理解如何导入我的android库项目作为我的应用程序项目的依赖项.
我尝试在线查找并建议大多数答案转到我的应用程序的项目结构,然后单击"+"然后单击"导入模块"
但Android Studio 0.3.4 - 0.5.2没有显示任何选项,当我点击"+"时,它只显示新模块的窗口.
我做错了什么或什么?
救命!!!
android android-library android-studio android-gradle-plugin
如何将现有Android项目转换为Android Studio中的Android库项目?在Eclipse中,这是可能的.
实际上,我想将一个旧的Android项目转换为Android库项目,这样我就可以使用该Android项目的现有代码来构建一个新的Android项目,并在Android Studio中进行微小的更改.
我有一个像这样的目录/项目设置:
C:\
_dev\
Projects\
Logger
MyProject
Run Code Online (Sandbox Code Playgroud)
Logger是一个使用Gradle的Android库项目.MyProject是一个标准的Android项目项目,需要使用Logger库.
我正在使用Android Studio,并尝试将Logger添加到外部库.虽然这在开发过程中起作用,但我会在构建时收到有关未找到类的消息.
我是Gradle的新手,但在MyProject中的build.gradle中尝试了以下内容:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.1.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 18
}
dependencies {
compile files("../Logger")
}
}
dependencies {
compile 'com.android.support:gridlayout-v7:18.0.0'
compile 'com.android.support:appcompat-v7:18.0.0'
}
Run Code Online (Sandbox Code Playgroud) 我试图找出为什么我的Android工作室没有正确识别AppCompat v7库.下面的import语句显示为灰色,并表示没有support.v7.app的包.以下是我的活动文件:
import android.support.v7.app.AppCompatActivity;
public class XApplicationActivity extends AppCompatActivity
Run Code Online (Sandbox Code Playgroud)
我的build.grade:
compile "com.android.support:appcompat-v7:22.0.0"
compile "com.android.support:support-annotations:$ANDROID_SUPPORT_VERSION"
compile "com.android.support:support-v4:$ANDROID_SUPPORT_VERSION"
Run Code Online (Sandbox Code Playgroud)
我的项目设置:
minSdkVersion = 14
targetSdkVersion = 21
compileSdkVersion = 21
buildToolsVersion = "22.0.1"
Run Code Online (Sandbox Code Playgroud)
所以我真的很困惑为什么这仍然给我带来问题.我已经尝试过的事情:
有谁知道任何修复?这花了我很多时间,这真的令人沮丧.
android android-appcompat android-library android-support-library
我想获得在我的库项目的一个类中运行时引用/托管我的库的应用程序的上下文.可能吗?如果有,怎么样?
谢谢
更新 我不希望我的用户将参数中的上下文传递给我的库项目,因为我的库项目可能会通过JNI调用,我不知道如何在JNI中获取上下文并将其传递给Java层.
我的项目的构建路径上有一个库(jar).项目使用以下意图访问jar中的MainActivity:
final Intent it = new Intent();
it.setClassName("com.example.lib", "com.example.lib.MainActivity");
startActivity(it);
Run Code Online (Sandbox Code Playgroud)
它曾经工作了一段时间,但突然开始得到'ActivityNotFoundException:没有找到活动来处理Intent',我能够解决它.但是现在我遇到了'java.lang.SecurityException:Permission Denial:start Intent'.
我已经尝试了所有关于stackoverflow的建议(检查清单文件中的重复项;将lib:exported ="true"添加到lib清单; Eclipse> Project> Clean;添加/修改'intent-filter'标签;等等).我甚至尝试重新编写项目的清单,但没有去任何地方.
这是logcat输出:
11-07 06:20:52.176: E/AndroidRuntime(4626): FATAL EXCEPTION: main
11-07 06:20:52.176: E/AndroidRuntime(4626): java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.example.lib/.MainActivity } from ProcessRecord{40dd3778 4626:com.example.project/u0a10046} (pid=4626, uid=10046) not exported from uid 10047
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Parcel.readException(Parcel.java:1425)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Parcel.readException(Parcel.java:1379)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1885)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1412)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivityForResult(Activity.java:3370)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivityForResult(Activity.java:3331)
11-07 06:20:52.176: E/AndroidRuntime(4626): at …Run Code Online (Sandbox Code Playgroud) 在属于Library项目的类中,我调用:
webview.loadUrl("file:///android_asset/info.html", null);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这只有在我将文件info.html 复制到Application的项目资产文件夹中时才有效.
有没有办法告诉Android库代码:"在库的资源文件夹中查找此文件,而不是在应用程序的资源文件夹中"?
android ×10
android-library ×10
apk ×1
classloader ×1
dalvik ×1
gradle ×1
java ×1
reflection ×1